TypeScript 枚举(Enum)是一种特殊的数据类型,它允许我们为一组命名的常量分配整数值。默认情况下,第一个枚举成员的值为 0
,后续成员的值会依次递增。但是,你也可以显式地为枚举成员赋值。
枚举简介
- 枚举是一种类型安全的方式,用于表示一组固定数量的常量值。
- 枚举类型中的每个成员都有一个与之相关联的值,这个值可以是整数或字符串。
- 枚举可以帮助提高代码的可读性和可维护性。
使用方法
- 定义枚举
enum Color {
Red,
Green,
Blue
}
// 或者带有显式值的枚举
enum ColorWithValues {
Red = 1,
Green = 2,
Blue = 4
}
// 字符串枚举
enum ColorNames {
Red = "Red",
Green = "Green",
Blue = "Blue"
}
- 访问枚举成员
你可以通过枚举类型名和成员名来访问枚举成员的值。
let c: Color = Color.Green;
console.log(c); // 输出:1
let cwv: ColorWithValues = ColorWithValues.Blue;
console.log(cwv); // 输出:4
let cn: ColorNames = ColorNames.Red;
console.log(cn); // 输出:"Red"
- 枚举成员的双向映射
TypeScript 枚举提供了从枚举值到枚举名称的反向映射。这意味着你可以通过枚举值找到其对应的枚举名称。
console.log(Color[1]); // 输出:"Green",注意这里使用的是枚举类型名作为对象,并传入枚举值作为键
// 注意:对于字符串枚举,反向映射并不适用,因为字符串枚举的值是唯一的。
- 枚举的常量性和不可变性
枚举成员是常量,你不能对它们进行赋值。但是,你可以将枚举成员的值赋给其他变量,并对这些变量进行修改。
5. 计算得到的枚举成员
你还可以使用表达式或函数来计算枚举成员的值。但是,请注意,计算得到的枚举成员必须在枚举的末尾定义,因为它们依赖于前面的枚举成员的值。
enum FileAccess {
// 常量成员
None,
Read = 1 << 1,
Write = 1 << 2,
ReadWrite = Read | Write,
// 计算得到的成员
G = "123".length,
H = () => 456, // 注意:这里虽然语法上没有错误,但通常我们不会在枚举中使用函数
}
// 注意:H 成员的值将是其函数体,而不是函数调用的结果。
- 枚举类型在 TypeScript 中的用途
- 用于表示一组固定的常量值,如颜色、状态等。
- 在函数或类的方法中作为参数类型,以提高代码的类型安全性。
- 在 TypeScript 接口或类型中作为属性类型,以确保属性的值是一组预定义的常量之一。