string이나 number 같은 타입 말고 값 자체가 타입이 되는 것도 가능하다.
잠깐 var나 let말고 const를 생각해보자. const는 변수에 한번 값이 할당되고 나면 그 값을 바꿀 수 없다. 예를 들어
이렇게 let으로 변수를 선언하고 문자열 값을 대입하면 그 타입이 자동으로 'string'으로 추론된다.
그런데 만약
이렇게 const로 상수를 선언해버리면 앞으로 이 상수의 타입은 해당 문자열 값이 되어버리는 식이다. 그러니까
이런 식으로 아예 값 자체를 타입으로 설정하는 것이 가능하다는 뜻이다. 사실 Literal Type은 그 자체로 유용하다기보다는 Union과 함께 사용했을 때 꽤 유용하게 사용할 수 있다.
예를 들어 이런 식으로 함수의 특정 파라미터에 들어올 수 있는 값들의 후보군을 제한할 수도 있고
리턴값의 후보군을 제한할 수도 있다.
그리고 Literal type("auto")은 이런 식으로 Non-Literal type(Options)와 함께 사용하는 것도 가능하다.
참고로 이런 숫자나 문자열말고도 boolean 값도 literal type이 될 수 있는데 당연히 그 타입은 두 종류로 true와 false이다. 사실 boolean 타입 자체가 true | false 에 대한 alias이다.
*실무에서 별로 안 쓸 것 같지만 공식 문서에 있는 부분: