📚 타입스크립트 입문 시리즈
🟢 ① tsconfig.json 완전 정복 | 🟢 ② 개발 환경 세팅 | 🟢 ③ 기본 타입 정복 | 🟢 ④ interface vs type | 🟢 ⑤ 함수 타입 선언 | 🟢 ⑥ 유니언 & 인터섹션 타입 | 🟢 ⑦ 타입 추론과 단언 | 🟢 ⑧ 타입 좁히기 | 🟢 ⑨ 제네릭(Generic) | 🟢 ⑩ 유틸리티 타입 | 🟢 ⑪ 고급 타입 조작 | 🟢 ⑫ 조건부 타입 | 🔵 ⑬ Enum vs Const Enum
🟢 ① tsconfig.json 완전 정복 | 🟢 ② 개발 환경 세팅 | 🟢 ③ 기본 타입 정복 | 🟢 ④ interface vs type | 🟢 ⑤ 함수 타입 선언 | 🟢 ⑥ 유니언 & 인터섹션 타입 | 🟢 ⑦ 타입 추론과 단언 | 🟢 ⑧ 타입 좁히기 | 🟢 ⑨ 제네릭(Generic) | 🟢 ⑩ 유틸리티 타입 | 🟢 ⑪ 고급 타입 조작 | 🟢 ⑫ 조건부 타입 | 🔵 ⑬ Enum vs Const Enum
🎯 Enum vs Const Enum – 차이점과 실무에서의 선택 기준
타입스크립트에서 열거형(enum)은 상수를 깔끔하게 선언할 수 있는 방법입니다.
그런데 비슷한 문법인 const enum
도 존재합니다. 둘은 어떤 차이가 있고, 실무에서는 무엇을 선택해야 할까요?
① 기본 Enum
enum Direction {
Up,
Down,
Left,
Right
}
console.log(Direction.Up); // 0
기본 enum
은 런타임에도 존재하는 객체로 변환됩니다. 따라서 다음과 같은 양방향 매핑도 가능합니다:
Direction[0] === 'Up'; // true
Direction['Up'] === 0; // true
② Const Enum
const enum Direction {
Up,
Down,
Left,
Right
}
const d = Direction.Left;
const enum
은 런타임에는 완전히 사라지고 숫자 값만 남습니다. → 결과적으로 훨씬 가볍고 빠르게 실행됩니다.
// 컴파일 결과 예시
var d = 2;
③ 차이 비교
항목 | enum | const enum |
---|---|---|
런타임 존재 | ✅ 있음 (객체로 컴파일됨) | ❌ 없음 (값만 인라인됨) |
양방향 접근 | 가능 | 불가능 |
번들 크기 | 조금 더 큼 | 작음 (최적화됨) |
tsconfig 설정 필요 | 없음 | preserveConstEnums: false |
사용 제한 | 없음 | 라이브러리에서 export 불가 |
④ 실무 선택 가이드
- 공용 라이브러리, SDK, 외부 API 타입 정의 → 일반
enum
사용 - 성능이 중요하고 내부 전용 enum →
const enum
사용 - Webpack, Babel 사용 시
const enum
은 문제가 생길 수 있음 → 일반 enum 선호
⑤ const enum 주의사항
// tsconfig.json
{
"compilerOptions": {
"preserveConstEnums": false // 기본값은 false (const enum 최적화됨)
}
}
그러나 const enum
은 라이브러리로 export할 수 없습니다. 바벨(Babel) 트랜스파일을 쓰는 경우 컴파일 에러가 발생하기도 합니다.
📘 마무리 요약
enum
은 런타임 객체로 존재하며 유연하고 직관적const enum
은 더 빠르고 가볍지만 제약이 있음- 실무에선 팀 컨벤션 + 트랜스파일러 환경 고려해서 결정
📘 다음 글 예고
👉 Mapped Type & Template Literal Type 실전 예제에서 동적으로 타입을 만드는 기술을 배워봅니다!
'language > typescript' 카테고리의 다른 글
💼 실전 타입 유틸 패턴 총정리 & 예제 모음 (0) | 2025.04.27 |
---|---|
🔁 Mapped Type & Template Literal Type – 실전 예제 중심 정리 (1) | 2025.04.27 |
⚖️ 조건부 타입 (Conditional Types) 완전 정리 (0) | 2025.04.27 |
🧠 고급 타입 조작 – keyof, typeof, infer, extends 완전 정리 (0) | 2025.04.27 |
🔧 유틸리티 타입 – Partial, Pick, Omit 등 실무 핵심 정리 (0) | 2025.04.27 |
댓글