TypeScript에는 문자열과 숫자, boolean 세 가지 리터럴 타입이 있는데 이를 사용하면 문자열이나 숫자에 정확한 값을 지정할 수 있다.
var
또는 let
으로 변수를 선언할 경우 변수의 값을 변경할 수 있다. 하지만 const
로 변수를 선언하게 되면 TypeScript에게 이 객체는 절대 변경되지 않음을 알린다.
const helloWorld = "Hello World";
let hiWorld = "Hi World";
위 예시에서 helloWorld
는 문자열이 아닌 "Hello World"
로 타입을 정하지만 hiWorld
는 변경될 수 있으므로 문자열로 선언한다.
문자열 리터럴 타입은 유니언 타입, 타입 가드 그리고 타입 별칭과 잘 결합된다. 이런 기능을 함께 사용하여 문자열로 enum
과 비슷한 형태를 갖출 수 있다.
type Easing = "ease-in" | "ease-out" | "ease-in-out";
class UIElement {
animate(dx: number, dy: number, easing: Easing) {
if(easing === "ease-in") {
// ...
} else if(easing === "ease-out") {
} else if(easing === "ease-in-out") {
} else {
// 타입을 무시하면 이 곳에 도달한다.
}
}
}
허용된 세 개의 문자열이 아닌 다른 문자열을 사용하게 되면 오류가 발생한다. 문자열 리터럴 타입은 오버로드를 구별하는 것과 동일한 방법으로 사용될 수 있다.
위 문자열 리터럴과 같은 역할을 하는 숫자형 리터럴 타입도 있다.
function rollDice(): 1 | 2 | 3 | 4 | 5 | 6 {
return (Math.floor(Math.random() * 6) + 1) as 1 | 2 | 3 | 4 | 5 | 6;
}
이는 주로 설정값을 설명할 때 사용된다.