我刚才在尝试遍历枚举时注意到了这一点。
说你有
enum Gender {
Male = 1,
Female = 2
}
您这样做:
for (let gender in Gender) {
console.log(gender)
}
这将运行4(?)次。首先打印字符串1和2的(!)表示形式,然后打印字符串Male和Female。
我只能假设这是故意的。我的问题是为什么会这样? (我认为)这种怪异的实现背后的原因是什么?
答案 0 :(得分:6)
JS没有枚举。 TS会将您的枚举编译为:
var Gender;
(function (Gender) {
Gender[Gender["Male"] = 1] = "Male";
Gender[Gender["Female"] = 2] = "Female";
})(Gender || (Gender = {}));
在这里您可以看到有4个按键(1,2,Male,Female)。
您可以使用this site检查TS到JS编译输出。