enum 枚举类型

最后更新:2026-10-22

enum 枚举类型

枚举把一组相关常量组织到一个命名空间下,成员既有类型也有值。数字枚举默认从 0 自增;字符串枚举显式赋值,可读性更好。

分组基础类型
类型类型
严格模式不需要

ℹ️ 说明 编辑器将 TypeScript 转译为 JavaScript 后运行(不做类型检查);类型检查结果见示例 Output。

📝 语法

enum Direction { Up, Down } // 数字枚举: 0, 1
enum Level { Info = "info", Error = "error" } // 字符串枚举

⚙️ 参数

Member = 0数字成员默认从 0 自增,可显式赋值;字符串成员必须显式赋值
Enum[key]仅数字枚举支持 Direction[0] 反查名字,字符串枚举没有

返回值:枚举会产生真实的运行时对象(不是纯类型),与 interface/type 不同。

▶ 示例

修改下面的代码,点击试一试查看转译运行结果:

输出:

1 Shipped
warn

(转译后运行输出;Paid 序号是 1,OrderStatus[2] 反查到 Shipped)

💡 要点

ℹ️ 说明 数字枚举存在反向映射(OrderStatus[1] → "Paid"),字符串枚举没有反向映射。
💡 提示 字符串枚举调试和序列化后仍有意义(日志里看到 "warn" 而不是 1),对外接口优先用它。
⚠️ 注意 枚举与字面量联合类型功能重叠;很多团队规范倾向后者(不产生运行时代码)。新项目先用字面量联合,确有需要再上枚举。
更多案例即将上线。

📚 相关教程

❓ 常见问题

Q enum 和字面量联合类型怎么选?
A 两者都能限定取值。枚举是真实对象、可放运行时逻辑;字面量联合零运行时成本、与普通字符串无缝互操作。多数场景推荐字面量联合。
Q 数字枚举的默认编号规则是什么?
A 从 0 开始自增;某成员显式赋值后,后续成员在其基础上 +1。如 { A, B = 5, C } 编号是 0、5、6。
Q const enum 是什么?
A const enum 在编译时把成员引用直接内联成值、不生成枚举对象。但它在隔离编译(如 Babel/swc)下有兼容问题,跨模块使用要谨慎,现代项目常改用 as const 对象。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏