타입스크립트에서 TS7053 오류가 발생하는 경우를 살펴보자.
우선 아래 코드를 보자.
const obj = {
name: "doringri",
};
let propertyName = "name";
console.log(obj[propertyName]); // TS7053 error
자바스크립트라면 아무런 문제가 없는 코드지만, 타입스크립트는 에러를 표시한다.
하지만 propertyName을 const로 정의하면 어떨까?
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 타입으로 추론됩니다.
'IT > JavaScript & TypeScript' 카테고리의 다른 글
[JavaScript/알고리즘] K번째수 (feat. sort() 메소드) (0) | 2024.12.17 |
---|---|
[TypeScript] 유틸리티 타입 (Partial, Required, Record, Pick, Omit, Exclude) (1) | 2024.12.12 |
[TypeScript] 타입스크립트의 Duck Typing과 Freshness (1) | 2024.11.29 |
[JavaScript/알고리즘] 의상 (0) | 2024.11.17 |
[JavaScript/알고리즘] 전화번호 목록 (1) | 2024.11.14 |