24b0d121e0c176b660b8f68b12d21a1d29fc5385


하나도 의미없이 무지성으로 변수들을 복제한 것으로 결론이 났다.


ChatGPT

경우에 따라 다릅니다. 대부분의 내부 TS 프로젝트에서는 export const enum만으로도 충분하지만, 라이브러리·다양한 툴체인 호환성·런타임 조작(리플렉션) 등이 필요하면 개별 export const를 따로 선언해 두는 것이 실전에서 안전합니다.

핵심 정리
export const enum

tsc로 빌드하고 preserveConstEnums: false(기본)면 컴파일 타임에 값이 인라인되어 런타임에 enum 객체가 남지 않음.

장점: 런타임 코드가 줄어들고 성능·번들 크기 면에서 유리.

단점: Babel 같은 도구(또는 isolatedModules: true 설정을 사용하는 환경)에서는 처리되지 않거나 에러가 날 수 있음 — 결과적으로 JS 소비자가 기대하는 런타임 값이 없을 수 있음.

**개별 export const**를 같이 선언하는 이유

JS 소비자/다른 툴체인과의 호환성 — 런타임에서 값으로 import 가능하게 하려는 목적.

런타임 리플렉션(.keys, 동적 접근 등)을 해야 할 때.

명시적 API: import { A } from 'pkg'처럼 사용성을 높이고 트리쉐이킹이 잘 되게 하려는 목적.

타입/런타임 분리: 타입은 const enum/타입으로, 런타임은 export const로 제공하면 TS 편의와 JS 호환을 동시에 만족.

- dc official App