◆
TypeScript 枚举 enum 详解
什么是枚举
使用枚举我们可以定义一些带名字的常量。 使用枚举可以清晰地表达意图或创建一组有区别的用例。 TypeScript 支持数字的和基于字符串的枚举。
示例
如下枚举,生成的值 A=0,B=1,C=100,D=101,可以看出数字枚举是自增长的。
export enum NumEnum {
A,
B,
C = 100,
D,
}
字符串枚举
export enum StringEnum {
A = 'testa',
B = '66',
C = 101,
}
枚举编译后的样子
上述的枚举示例编译后的代码如下,可以看出枚举是一个变量,初始值是一个空对象,然后在立即执行表达式中,将枚举的值赋予了。
export var NumEnum;
(function (NumEnum) {
NumEnum[(NumEnum['A'] = 0)] = 'A';
NumEnum[(NumEnum['B'] = 1)] = 'B';
NumEnum[(NumEnum['C'] = 100)] = 'C';
NumEnum[(NumEnum['D'] = 101)] = 'D';
})(NumEnum || (NumEnum = {}));
export var StringEnum;
(function (StringEnum) {
StringEnum['A'] = 'testa';
StringEnum['B'] = '66';
StringEnum[(StringEnum['C'] = 101)] = 'C';
})(StringEnum || (StringEnum = {}));
如何理解 NumEnum[NumEnum["A"] = 0] = "A" 这个赋值语句
- 首先
NumEnum["A"] = 0就是相当于NumEnum对象的A属性的值为0 - 然后赋值语句就变成了
NumEnum[0] = "A" - 这样就能看出枚举中定义一个变量,就相当于在对象中增加了两个值,如上述代码就是
{A: 0, 0: 'A'}
打印一下 NumEnum,如图所示

可以看出每定义一个属性,其对应的属性值都有映射。但是从 StringEnum 可以看出,反向映射只有数值性枚举具有,而字符串枚举是没有的

还没有留言,来发表第一条吧~