枚举(enum)
在javaScript中是没有枚举的概念的TS帮我们定义了枚举这个类型
普通声明的枚举编译完后是个对象
数字枚举
tsxenum Type { red, green, blue, } console.log(Type.red) //0 console.log(Type.green) //1 console.log(Type.blue) //2 console.log(Type[0])//red console.log(Type[1])//green console.log(Type[2])//blue增长枚举
tsxenum Type{ red = 1, green, blue } console.log(Type.red) //1 console.log(Type.green) //2 console.log(Type.blue) //3 //如上,我们定义了一个数字枚举, Red使用初始化为 1。 其余的成员会从 1开始自动增长。 换句话说, Type.Red的值为 1, Green为 2, Blue为 3。异构枚举 枚举可以混合字符串和数字
tsx//枚举可以混合字符串和数字成 enum Types { Red = 'red', Green = 1, Blue = 'blue', } console.log(Types.Red) //red console.log(Types.Green) //1 console.log(Types.Blue) //blue反向映射
它包含了正向映射(
name->value)和反向映射(value->name)要注意的是 不会为字符串枚举成员生成反向映射。
tsxenum Enum { fall } let a = Enum.fall; console.log(a); //0 let nameOfA = Enum[a]; console.log(nameOfA); //fall常数枚举(const)
let和var都是不允许的声明只能使用constconst声明的枚举会被编译成常量常数枚举是使用
const enum定义的枚举类型tsxconst enum Type { red, blue, } let color: any = [Type.red, Type.blue] //编译结果 var color = [0 /* Type.red */, 1 /* Type.blue */]常数枚举与普通枚举的区别是,它会在编译阶段被删除,并且不能包含计算成员。
tsxconst enum Color {Red, Green, Blue = "blue".length}//报错
