literal Types
특정 문자만 들어올 수 있게 타입 지정
let 이름 : 'kim'
// 에러발생
이름 = 123;
이름이라는 변수에는 ‘kim’이라는 문자열만 들어올 수 있다.
장점 : 변수에 뭐가 들어올지 더 엄격하게 관리 가능.
// 변수 (union type도 가능)
let 접니다 : '대머리' | '솔로';
// 함수
function 함수(a : 'hello'){
}
function('hello');
function game(a: '가위', b: '바위', c: '보'): ('가위' | '바위' | '보')[] {
return ['가위', '보'];
}
game('가위', '바위', '보');
as const 문법
var obj = { name : 'kim' }
function 내함수( a:'kim' ){
}
// 에러 발생.
내함수(obj.name);
obj.name의 타입은 string이다 사실… 반면에 내함수 라는 함수의 파라미터 a 타입은 ‘kim’ 그래서 타입 string과 kim은 다르기 때문에 함수 인자로 넘길때 오류가 발생하는것…
해결방법 as const
// name이라는 속성 타입은 이제 string이 아니고 'kim' 이다.
var obj = { name : 'kim' } as const
function 내함수( a:'kim' ){
}
내함수(obj.name);
as const의 효과 : object value 값을 그대로 타입으로 지정해줌.