前面我们了解了基础类型、引用类型、元组类型、symbol类型的使用,本章我们来了解TypeScript中如何使用枚举类型。
在TypeScript中,枚举(Enumeration)类型是一种用于定义命名常量集合的数据类型。
枚举类型是将相关的常量值分配一个有意义的名字,在代码中使用这些名字来表示某种状态或选项。
它可以使代码更具可读性和可维护性。
在TypeScript中使用枚举 是通过 enum 关键字来进行定义的
在TypeScript中 我们如果要定义一个从0开始的数据枚举 如下面代码。当我们赋值是 枚举的值就是从0开始
下面 我们定义了一个数字枚举
为什么是数字枚举呢
因为如果我们枚举里面的内容不指定默认的值
那么将会默认赋值 从0开始
Zero 0 One 1 Two 2
//下面 我们定义了一个数字枚举
//为什么是数字枚举呢
//因为如果我们枚举里面的内容不指定默认的值
//那么将会默认赋值 从0开始
// Zero 0 One 1 Two 2
enum NumerEnum{
Zero,
One,
Two,
}
当然 我们也可以指定默认值
例如当我们个枚举里面的Zero 指定了默认值1之后,其他成员的值会自动递增
结果为:Zero 1 One 2 Two 3
enum NumerEnum{
Zero = 1,
One,
Two,
}
而且我们不止可以在第一项个默认值 还可以在其他项给默认值,给了默认值之后的其他成员值会自动递增
例如下面例子的结果:
Zero 0 One 3 Two 4
enum NumerEnum{
Zero,
One = 3,
Two,
}
枚举值 除了是数字 还可以是字符串,例如下面的例子定义了方向的枚举,注意 字符串的枚举是没有自增长的功能的。
enum Direction {
Up = 'up',
Down = 'down',
Left = 'left',
Right = 'right',
}
布尔类型枚举,顾名思义就是定义枚举类型值为布尔的 定义方法如下
enum BooleanEnum {
TRUE = true,
FALSE = false
}
上面我们了解了数字枚举和字符串枚举,那么是不是在我们实际项目中 也有可能会遇到一个枚举里面需要字符串、数字、布尔类型 同时存在的
enum MixedEnum {
A = 1,
B = "b",
C = "c",
D = true
}
在实际的项目中 我们可能在接口的定义中 某个属性会使用到枚举。例如我们接口中有个方向属性 它可能为枚举中的任意值,如下代码定义
//定义方向枚举
enum Direction {
Up = 'up',
Down = 'down',
Left = 'left',
Right = 'right',
}
//定义接口
interface MyInterface {
a:1
direction : Direction //方向的定义
}
在 TypeScript 中,const 枚举和普通枚举有以下几个区别:
编译结果:普通枚举在编译后会生成一个真实的对象,而 const 枚举在编译后会直接将枚举的值内联到使用处,不会生成真实的对象。
使用方式:普通枚举可以通过枚举成员的名称进行访问,而 const 枚举只能通过值进行访问。
只读性质:const 枚举成员是只读的,不允许修改其值,而普通枚举成员是可变的。
枚举语句:普通枚举可以包含成员的初始化表达式,而 const 枚举不允许包含任何初始化表达式。
由于 const 枚举的编译结果会将枚举的值内联到使用处,因此适用于编译后不需要真实对象的场景,可以减少编译结果的体积。而普通枚举则适用于需要在运行时访问枚举成员以及进行修改的场景。
使用枚举时,可以通过枚举名和成员名来获取对应的枚举值。
enum Colors {
Red,
Green,
Blue,
}
let color: Colors = Colors.Red;
console.log(color); // 输出: 0
let colorName: string = Colors[1];
console.log(colorName); // 输出: Green
可以通过手动指定枚举成员的值来覆盖默认的自增值
enum Colors {
Red = 1,
Green = 2,
Blue = 4,
}
let color: Colors = Colors.Green;
console.log(color); // 输出: 2
枚举除了可以用于定义常量,还可以用作类型注解
enum Colors {
Red,
Green,
Blue,
}
function getColor(color: Colors): string {
switch(color) {
case Colors.Red:
return '红色';
case Colors.Green:
return '绿色';
case Colors.Blue:
return '蓝色';
default:
return '未知颜色';
}
}
let color: Colors = Colors.Blue;
console.log(getColor(color)); // 输出: 蓝色
枚举可以简化代码中对常量的使用,提高代码的可读性和可维护性。同时,枚举也可以用作类型注解,增强代码的类型安全性。