TypeScript-面试-枚举enum
2026年10月16日·Admin·1 次浏览
面试题:TS enum 有什么问题?更推荐什么写法?
数字枚举
编译后生成反向映射(值→键),产物体积大;常量枚举 const enum 可内联,但隔离编译、babel 场景可能踩坑。
字符串枚举
无反向映射,但仍生成运行时代码(非 const enum 时)。
常见问题
- 运行时存在:与「类型擦除」直觉不一致,tree-shaking 边界需注意。
- 合并声明与值/类型双重身份易让新手困惑。
- 严格模式下与
erasableSyntaxOnly(TS 7+ 方向)等策略冲突风险。
替代方案(面试加分)
- 字面量联合 +
as const对象:
const Kind = { A: "a", B: "b" } as const
type Kind = (typeof Kind)[keyof typeof Kind]
const enum:确定工具链支持时用。