타입스크립트에서 리터럴 타입을 최대한 그대로 유지하면서 그 값을 readonly로 만들어주는 기능을 한다.
- primitive 타입의 값 뒤에 as const 연산자가 붙으면 값 자체가 타입이 된다.(Readonly)
- object 타입의 값 뒤에 as const 연산자가 붙으면 read-only 타입이 된다.
- const assertion은 enum멤버에 대한 참조 또는 string, number, boolean, array, object 리터럴에만 적용할 수 있다.
const a = [1, 2, 3] as const;
a는 읽기 전용이 되었기 때문에 a.push와 같은 메서드를 사용하지 못한다.
타입스크립트는 let은 값이 바뀔 수 있다고 인식하여 일반적인 값인 number로 타입을 추론하게 된다.
반면에 const는 a의 타입을 11이라는 리터럴 타입으로 추론하게 된다.
타입스크립트는 최대한 구체적으로 추론하기 때문에, const로 선언한 값인 age를 10으로 타입을 추론하게 되는 것이다.
🤔 언제 쓸까
리터럴 값을 고정시켜 함수 인자나 객체 타입 추론을 정확히 할 수 있을 때 사용
가변적은 Object를 enum스럽게 사용하고 싶을 경우
읽기 전용 으로 바꾸고 싶은 경우 등등,,
➡️ 결론은 const assertion도 값을 좁혀서 타입을 더 정확히 만들자 라는 의미 같다.
'TypeScript' 카테고리의 다른 글
[TS] 타입 가드 & 타입 내로잉(is, as const, keyof, typeof, as) (0) | 2025.04.23 |
---|---|
[TS] 타입스크립트에서의 클래스 (0) | 2025.04.23 |
[TS] 인터페이스&타입 등등 (0) | 2025.04.22 |
[TS] Any & Unknown (0) | 2025.04.22 |
[TS] TIL, Narrowing (0) | 2025.04.21 |