TypeScript -- 枚举类型
1,一个角色判断的例子
2,枚举
https://www.tslang.cn/play/index.html
3,例子
// 数字枚举
enum Role {
Reporter,
Developer,
Maintainer,
Owner,
Guest
}
// console.log(Role.Reporter) // 0
// 字符串枚举
enum Message {
Success = '成功',
Fail = '失败'
}
// 异构枚举(容易混淆,不建议使用)
enum Answer {
N,
Y = 'Yes'
}
// 枚举成员
enum Char {
// 枚举成员的类型一共分为两类
// 1,常量枚举--const(会在编译的时候计算出结果,然后以常量的形式出现在运行时环境)
// 2,需要被计算的枚举成员--computed(会被保留在程序的执行阶段)
// 常量枚举包括三种情况
a, // const 没有初始值的情况
b = Char.a,// const 对已有成员的引用
c = 1 + 3, // const 常量的表达式
d = Math.random(),
e = '123'.length,
f = 4 // 在computed后面的常量枚举,必须有初始值
}
// 常量枚举(用const声明的就是常量枚举)
// 会在编译阶段被移除
// 作用:当我们不需要一个对象,而需要一个对象的值的时候,减少在编译环境的代码const enum Month {
Jan,
Feb,
Mar
}
let month = [Month.Jan, Month.Feb, Month.Mar]
//枚举类型
enum E { a, b}
enum F { a = 0, b = 1 }
enum G { a = 'a', b = 'b' }
let e: E = 3
let f: F = 3
// e === f // 两种不同枚举类型是不可以比较的
let e1: E.a = 1
let e2: E.b
// e1 === e2 // 是永远不可以进行比较的
let e3: E.a =2
// e1 === e3 // 相同的枚举类型是可以比较的
//字符串枚举的取值只能是枚举成员的类型
let g1: G = G.b
let g2: G.a = G.a