질문 124 · 실전 면접 답변
Enum의 장단점과 Literal Union 대안은 무엇인가요?
이렇게 답해 보세요 (핵심 답변)
enum은 관련된 상수 집합에 이름을 붙이는 문법이지만, 컴파일 후 사라지는 일반 타입과 달리 런타임에 실제 JavaScript 객체를 생성합니다. 특히 숫자 enum은 값에서 이름으로의 역방향 매핑까지 만들어 코드 크기가 커지고 의도치 않은 키 순회 이슈가 생길 수 있습니다. 그래서 실무에서는 런타임 오버헤드가 없는 리터럴 유니온('idle' | 'loading')이나, 런타임 상수 객체도 필요할 때는 as const 객체를 대안으로 많이 사용합니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- 문자열 리터럴 유니온은 별도의 enum을 import하지 않고도 에디터 자동완성과 정확한 타입 검사를 그대로 제공하며 번들 크기를 늘리지 않습니다.
- const enum은 컴파일 시 값을 인라인으로 치환해 런타임 객체를 없애 주지만, 단일 파일 트랜스파일 도구(isolatedModules)나 라이브러리 배포 환경에서 제약이 따릅니다.
면접에서 자주 하는 실수
숫자 enum에서 제공되는 역방향 매핑(Enum[0])이 문자열 enum에서도 똑같이 동작할 것이라고 가정하지 않아야 합니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 124번을 바탕으로 질문과 답변을 새로 정리했습니다.