상수 단언은 값을 리터럴 타입으로 고정하여 변수의 타입을 더욱 엄격하게 제어할 수 있는 기능이다.
이를 통해 컴파일러가 해당 값이 변경하지 않는 것을 보장하고, 정확한 타입 추론을 도와준다.
변수 값이 고정되어야 하는 상황에서 특히 유용하다!
특징
1. 확장할 수 없는 리터럴 타입
변수의 타입을 리터럴 값으로 고정하여, 확장할 수 없게 만듦.
2. 애플리케이션 전역에서 일관된 값 사용
값을 상수로 고정하여 전역에서 올바른 값을 일관되게 사용할 수 있게 한다.
3. 컴파일러의 정확한 타입 추론
TypeScript 컴파일러가 값의 타입을 정확히 추론할 수 있게 돕는다.
let greeting = "Hello, World!";
// TypeScript는 greeting의 타입을 string으로 추론
const greetingConst = "Hello, World!" as const;
// greetingConst의 타입은 "Hello, World!"라는 리터럴 타입으로 고정
객체에 상수 단언 사용
const user = {
name: "Alice",
age: 30
} as const;
// user의 타입은 다음과 같이 고정:
// {
// readonly name: "Alice";
// readonly age: 30;
// }
배열에 상수 단언 사용
const colors = ["red", "green", "blue"] as const;
// colors의 타입은 다음과 같이 고정:
// readonly ["red", "green", "blue"]
배열에 상수 단언을 사용하면 튜플로 간주됨.
상수 단언을 사용한 타입 추론
const directions = ["up", "down", "left", "right"] as const;
type Direction = typeof directions[number];
// Direction 타입은 "up" | "down" | "left" | "right"
// directions[0] = "up"
function move(direction: Direction) {
console.log(`Moving ${direction}`);
}
move("up"); // 정상
move("right"); // 정상
// move("forward"); // 오류: 타입 '"forward"'은 'Direction' 타입에 할당할 수 없다.
'개발 > TypeScript' 카테고리의 다른 글
[TypeScript] TypeScript의 모듈화 (0) | 2024.12.11 |
---|---|
[TypeScript] TypeScript의 비동기 함수 (0) | 2024.12.11 |
[TypeScript] TypeScript의 유틸리티 타입 (0) | 2024.12.10 |
[TypeScript] TypeScript의 고급 타입 (1) | 2024.12.10 |
[TypeScript] TypeScript의 다양한 타입 (0) | 2024.12.06 |