chanwu.dev

TypeScript에서 enum 대신 const 사용하기

TypeScript 버전 5.5.4

enum

export enum Theme {
  Light,
  Dark,
}

트랜스파일 결과:

"use strict";

// src/enum.ts
var Theme = /* @__PURE__ */ ((Theme2) => {
  Theme2[(Theme2["Light"] = 0)] = "Light";
  Theme2[(Theme2["Dark"] = 1)] = "Dark";
  return Theme2;
})(Theme || {});
  • IIFE(즉시 실행 함수)로 변환됨
  • TSC는 IIFE를 사용하는지 사용하지 않는 코드인지 알 수 없어 자바스크립트 번들에 항상 포함(tree-shaking 어려움)

const

export const Theme = {
  Light: "light",
  Dark: "dark",
} as const;

export type Theme = (typeof Theme)[keyof typeof Theme];

트랜스파일 결과:

"use strict";

// src/enum.ts
var Theme = {
  Light: "light",
  Dark: "dark",
};
  • 단순 객체로 변환
  • 필요 시에만 번들에 포함 (tree-shaking 가능)
// 사용 예
function setTheme(theme: Theme) {}

setTheme(Theme.Dark);

참고

댓글