当在Typescript枚举中使用整数作为值时,它们似乎都变成键。 下面是一个例子:
enum Precision {
ONE = 1,
TWO = 2
}
const keys = Object.keys(Precision)
console.log(keys) //["1", "2", "ONE", "TWO"]
同样,如果我们尝试获得如下值:
let v:number[] = Object.keys(Precision).map(key => Precision[key])
console.log(v) //["ONE", "TWO", 1, 2]
这是虫子吗? 是否有可能使用整数值并得到预期的语义? 当使用string值时,上面的示例证明是正确的。 下面是一个完整的演示:
https://stackblitz.com/edit/typescript-enum-values
这就是enum
在Typescript中的工作方式。 它创建一个对象,该对象将字符串键映射到数字,并将数字映射回这些键(文档)
反向映射
除了为成员创建具有属性名的对象外,数值枚举成员还获得从枚举值到枚举名称的反向映射。 例如,在本例中:
这就是枚举如何转换为javascript(打字脚本游戏)
var Precision;
(function (Precision) {
Precision[Precision["ONE"] = 1] = "ONE";
Precision[Precision["TWO"] = 2] = "TWO";
})(Precision || (Precision = {}));
这是一种别出心裁的写作方式:
var Precision = {}
Precision[1] = "ONE";
Precision[2] = "TWO";
Precision["ONE"] = 1
Precision["TWO"] = 2
这使您可以很容易地使用括号表示法将字符串值转换为数字,并将数字值转换为字符串。