학습 공간 개념 · 판단 · 실험

Fanta Lab

질문 124 · 실전 면접 답변

Enum의 장단점과 Literal Union 대안은 무엇인가요?

이렇게 답해 보세요 (핵심 답변)

enum은 관련된 상수 집합에 이름을 붙이는 문법이지만, 컴파일 후 사라지는 일반 타입과 달리 런타임에 실제 JavaScript 객체를 생성합니다. 특히 숫자 enum은 값에서 이름으로의 역방향 매핑까지 만들어 코드 크기가 커지고 의도치 않은 키 순회 이슈가 생길 수 있습니다. 그래서 실무에서는 런타임 오버헤드가 없는 리터럴 유니온('idle' | 'loading')이나, 런타임 상수 객체도 필요할 때는 as const 객체를 대안으로 많이 사용합니다.

함께 설명하면 좋은 이유 (꼬리질문 대비)

  1. 문자열 리터럴 유니온은 별도의 enum을 import하지 않고도 에디터 자동완성과 정확한 타입 검사를 그대로 제공하며 번들 크기를 늘리지 않습니다.
  2. const enum은 컴파일 시 값을 인라인으로 치환해 런타임 객체를 없애 주지만, 단일 파일 트랜스파일 도구(isolatedModules)나 라이브러리 배포 환경에서 제약이 따릅니다.

면접에서 자주 하는 실수

숫자 enum에서 제공되는 역방향 매핑(Enum[0])이 문자열 enum에서도 똑같이 동작할 것이라고 가정하지 않아야 합니다.

원리와 예제까지 읽기

공식 참고 자료

질문 목록 출처 ↗ · 원본 124번을 바탕으로 질문과 답변을 새로 정리했습니다.

← TypeScript