enum은 이름이 붙은 상수들의 집합을 정의합니다. TypeScript에는 숫자형 enum과 문자열 enum이 있습니다.
ts
{ , , , }
.;
[];
{
= ,
= ,
}
.;
enum은 이름이 붙은 상수들의 집합을 정의합니다. TypeScript에는 숫자형 enum과 문자열 enum이 있습니다.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
대부분의 TypeScript 타입(컴파일 시 사라짐)과 달리, 일반 enum은 JavaScript 객체를 번들에 방출합니다. 많은 팀이 순수하게 타입 레벨인 문자열 리터럴 union과 as const를 선호하는 이유입니다:
// 종종 선호됨 — 런타임 비용 제로, 로그에서 읽기 쉬움
const Status = { Active: "ACTIVE", Inactive: "INACTIVE" } as const;
type Status = typeof Status[keyof typeof Status]; // "ACTIVE" | "INACTIVE"
// 또는 간단히:
type Direction = "up" | "down" | "left" | "right";
const enum E { A, B } // 컴파일 시 인라인됨 — 런타임 객체 없음, 단 도구 관련 주의점 있음
Enum은 고정된 집합(상태, 역할, 방향)에 의미 있는 이름을 부여하고 하나의 네임스페이스 아래에 묶어줍니다.
하지만 런타임 코드를 방출하고 까다로운 점(숫자형 enum은 느슨하게 검사됨)이 있어, 현대 TypeScript는 간단한 경우 종종 문자열 리터럴 union을 선호합니다 — 더 가볍고 자연스럽게 직렬화됩니다.
네임스페이싱이나 역매핑이 필요할 때 enum을 사용하세요.