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 값을 그대로 타입으로 지정해줌.

스크린샷 2022-08-24 오후 6.15.02.png