IT/JavaScript & TypeScript

[TypeScript] 타입스크립트의 TS7053 오류와 타입 추론

땅일단 2024. 11. 30. 01:21

타입스크립트에서 TS7053 오류가 발생하는 경우를 살펴보자.

우선 아래 코드를 보자.

const obj = {
    name: "doringri",
};

let propertyName = "name";

console.log(obj[propertyName]);    // TS7053 error

 

자바스크립트라면 아무런 문제가 없는 코드지만, 타입스크립트는 에러를 표시한다.

하지만 propertyNameconst로 정의하면 어떨까?

 

const obj = {
    name: "doringri",
};

const propertyName = "name";

console.log(obj[propertyName]);    // doringri

 

에러 없이 잘 출력된다.

 

타입스크립트는 어떤 변수를 선언하거나 초기화할 때 타입 추론을 한다.

 

let으로 propertyName을 선언하고 초기화되면 이는 기본적으로 string으로 추론된다.

값의 변경이 일어날 수 있기 때문이다.

그렇게 되면 propertyName의 값이 정말로 obj의 프로퍼티 이름인지 확신할 수 없기에 이 같은 현상이 일어나는 것이다.

 

반면 const는 변하지 않는 상수값으로, string이 아닌 "name" 이라는 타입으로 추론된다. 이를 String Literal 타입이라고 한다.

obj의 프로퍼티 중 "name"이 포함되어 있기에 에러를 표시하지 않는다.

 

 


이와 같이, const에 숫자 값을 할당하면 Number Literal 타입으로 추론됩니다.