TypeScript - 迭代枚举时的奇怪行为

Vig*_*dén 2 javascript typescript

我在尝试迭代枚举时注意到了这一点.

说你有:

enum Gender {
    Male = 1,
    Female = 2
}
Run Code Online (Sandbox Code Playgroud)

你也是:

for (let gender in Gender) {
    console.log(gender)
}
Run Code Online (Sandbox Code Playgroud)

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

我只能假设这是有意的.我的问题是为什么会这样?这个(在我看来)奇怪的实现背后的原因是什么?

Ami*_*ich 7

JS没有枚举.TS将您的枚举编译为:

var Gender;
(function (Gender) {
    Gender[Gender["Male"] = 1] = "Male";
    Gender[Gender["Female"] = 2] = "Female";
})(Gender || (Gender = {}));
Run Code Online (Sandbox Code Playgroud)

你可以看到有4个键(1,2,男,女).

您可以使用此站点检查TS到JS编译输出.