1️⃣ 枚举

2️⃣ 字面量类型的问题

在类型约束位置,会产生重复代码,可以使用类型别名来解决问题。
逻辑含义和真实的值参数了混淆,会导致当修改真实的值时,产生大量的修改。
字面量类型不会进入编译。

2️⃣ 枚举

枚举通常用于约束某个变量的取值范围。
枚举会以对象的形式出现在编译的结果中。

  1. // 枚举
  2. // enum 枚举名 {
  3. // key: value
  4. // ......
  5. // }
  6. enum gender {
  7. male = "男",
  8. female = "女"
  9. }
  10. // gender:枚举名
  11. // male 和 female:枚举字段
  12. // 男和女:真实的值

1️⃣ 枚举 - 字符串枚举

  1. // 枚举
  2. // enum 枚举名 {
  3. // key: value
  4. // ......
  5. // }
  6. // 字符串枚举
  7. enum gender {
  8. male = "男",
  9. female = "女"
  10. }
  11. // 枚举的使用和联合类型与字面量类型相结合的使用方式相同
  12. console.log(gender.male); // 男
  13. console.log(gender.female); // 女
  14. // 使用枚举
  15. function fun(params: gender) {
  16. return params
  17. }
  18. fun(gender.female) // 女

1️⃣ 枚举 - 数字枚举

数字枚举会自动递增
被数字枚举约束的变量可以直接赋值为数字

  1. // 枚举
  2. // enum 枚举名 {
  3. // key: value
  4. // ......
  5. // }
  6. // 数字枚举
  7. enum num {
  8. num1,
  9. num2,
  10. num3
  11. }
  12. // 数字枚举会自动递增 ( 如果在枚举时没有赋值,第一个值为 0,如果赋值了,则会以第一个值递增 )
  13. console.log(num.num1); // 0
  14. console.log(num.num2); // 1
  15. console.log(num.num3); // 2
  16. // 被数字枚举约束的变量可以直接赋值为数字
  17. let sz: num = 10;

1️⃣ 最佳实践

尽量不要在一个枚举中即出现字符串字段又出现数字字段
使用枚举时,尽量使用枚举字段的名称不要使用真实的值

1️⃣ 枚举的位运算

主要针对数字枚举,字符串不可以。