TypeScript-遍历枚举时的怪异行为

时间:2019-01-08 12:51:37

标签: javascript typescript

我刚才在尝试遍历枚举时注意到了这一点。

说你有

enum Gender {
    Male = 1,
    Female = 2
}

您这样做:

for (let gender in Gender) {
    console.log(gender)
}

这将运行4(?)次。首先打印字符串1和2的(!)表示形式,然后打印字符串Male和Female。

我只能假设这是故意的。我的问题是为什么会这样? (我认为)这种怪异的实现背后的原因是什么?

1 个答案:

答案 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编译输出。