1️⃣ 枚举
2️⃣ 字面量类型的问题
在类型约束位置,会产生重复代码,可以使用类型别名来解决问题。
逻辑含义和真实的值参数了混淆,会导致当修改真实的值时,产生大量的修改。
字面量类型不会进入编译。
2️⃣ 枚举
枚举通常用于约束某个变量的取值范围。
枚举会以对象的形式出现在编译的结果中。
// 枚举// enum 枚举名 {// key: value// ......// }enum gender {male = "男",female = "女"}// gender:枚举名// male 和 female:枚举字段// 男和女:真实的值
1️⃣ 枚举 - 字符串枚举
// 枚举// enum 枚举名 {// key: value// ......// }// 字符串枚举enum gender {male = "男",female = "女"}// 枚举的使用和联合类型与字面量类型相结合的使用方式相同console.log(gender.male); // 男console.log(gender.female); // 女// 使用枚举function fun(params: gender) {return params}fun(gender.female) // 女
1️⃣ 枚举 - 数字枚举
数字枚举会自动递增
被数字枚举约束的变量可以直接赋值为数字
// 枚举// enum 枚举名 {// key: value// ......// }// 数字枚举enum num {num1,num2,num3}// 数字枚举会自动递增 ( 如果在枚举时没有赋值,第一个值为 0,如果赋值了,则会以第一个值递增 )console.log(num.num1); // 0console.log(num.num2); // 1console.log(num.num3); // 2// 被数字枚举约束的变量可以直接赋值为数字let sz: num = 10;
1️⃣ 最佳实践
尽量不要在一个枚举中即出现字符串字段又出现数字字段
使用枚举时,尽量使用枚举字段的名称不要使用真实的值
1️⃣ 枚举的位运算
主要针对数字枚举,字符串不可以。
