枚举
约 358 字大约 1 分钟
2026-02-09
枚举是 TypeScript 提供的一种特殊类型,用于定义一组 命名常量 的集合。它是 TypeScript 中少数几个会在运行时生成 JavaScript 代码的特性
定义一个枚举使用关键字 enum,紧跟枚举名称与枚举成员
enum Status {
Pending,
Success,
Failed,
}数字枚举
没有声明枚举的值,则会默认使用数字枚举,枚举值从 0 开始,以 1 递增
注
数字枚举可以进行反向映射,即通过枚举值获取枚举名称
enum Items {
Foo, // Items.Foo = 0
Bar, // Items.Bar = 1
Baz // Items.Baz = 2
}
console.log(Items.Foo) // 0
console.log(Items.Bar) // 1
console.log(Items.Baz) // 2
console.log(Items[0]) // 'Foo'
console.log(Items[1]) // 'Bar'
console.log(Items[2]) // 'Baz'如果只为某一个成员指定了枚举值,那么之前未赋值的成员仍然会使用从 0 地址的方式,之后的成员会从枚举值开始递增
enum Items {
Foo, // 0
Bar = 599,
Baz // 600
}字符串枚举
顾名思义,字符串枚举的成员值是字符串而不是数字
注
字符串枚举没有反向映射
enum HttpMethod {
GET = "GET",
POST = "POST",
PUT = "PUT",
DELETE = "DELETE",
PATCH = "PATCH"
}常量枚举
常量枚举与枚举相似,只是声明时多了 const 关键字。常量枚举会在编译阶段被内联,减少运行时对象开销
const enum Code {
Ok = 200,
NotFound = 404,
}
const code = Code.Ok