什么是枚举?
枚举通常用于约束某个变量的取值范围,上文说到值类型和联合类型也能达到同样的效果。枚举会出现在编译结果中。编译结果中表现为一个对象。
如何定义一个枚举
当我们在业务逻辑中,修改了真实值的时候,如果使用类型别名的话,那么我们的业务代码中将会有大量的冲突,而使用枚举的时候,由于赋值的时候使用逻辑名称赋值,因此只需要修改枚举中的值就可以了。
enum Gender {
male = "男", // 当这里的值修改为其他值,不会影响业务代码
female = "女"
}
let gender:Gender
gender = Gender.male // 用逻辑名称赋值而不是真实值
console.log(gender) // 男
枚举的规则
枚举的字段值可以是字符串或数字,
字段值为数字的称为数字枚举,数字枚举的值会自动自增。
enum num{
one,
two,
three
}
const a = num.one // 0
const b = num.two // 1
如果我们在定义枚举的时候没有设置值,那么会默认从0开始自增
enum num{
one = 1,
two,
three
}
const a = num.one // 1
const b = num.two // 2
如果我们在定义枚举的时候定义了一个值,那么下面的也会根据定义的值自动自增。
数字枚举编译后的结果不太一样,当遍历数字枚举的时候要格外注意
enum Level {
level1 = 1,
level2,
level3
}
let x: Level = Level.levle1
x = Level.level3
console.log(x) // 3
x = 5 // 不报错,数字枚举约束的变量可以任意赋值数值(不建议)
// 数字枚举编译后的结果:
/*
{
level1: 1,
level2: 2,
level3: 3,
1: "level1",
2: "level2",
3: "level3"
}
*/
注意:
- 尽量不要在一个枚举中既出现字符串又出现数字字段值;
- 使用枚举时,尽量使用枚举的字段名称,不使用真实值;