리터럴 타입
number
, string
, object
등이 아니라 구체적인 값으로 한정된 타입을 의미한다.
let과 const의 차이
- 변수의 타입을 명시하지 않고 선언하는 경우
let
으로 변수를 선언하면 기본 타입으로 지정된다.
const
로 변수를 선언하면 리터럴 타입으로 한정된다.
let str1 = '1234'; // 타입 : string
const str2 = '1234'; // 타입 : '1234'
as const
- 익명 타입의 오브젝트를 선언할 때,
as const
를 통해 프로퍼티들의 타입을 리터럴로 한정할 수 있다.
[1] 기본 : as const를 사용하지 않는 경우
const minsu = {
name : 'Minsu',
age : 22,
};
// { name : string, age: number }
type typeofMinsu = typeof minsu;
// 'name' | 'age'
type keyofTypeofMinsu = keyof typeofMinsu;
// 'string' | 'number'
type MinsuInfo = typeofMinsu[keyofTypeofMinsu];
[2] as const 사용
const minsu = {
name : 'Minsu',
age : 22,
} as const;
// { readonly name : string, readonly age: number }
type typeofMinsu = typeof minsu;
// 'name' | 'age'
type keyofTypeofMinsu = keyof typeofMinsu;
// 'Minsu' | 22
type MinsuInfo = typeofMinsu[keyofTypeofMinsu];