为什么typescript中的enum在按降序分配整数时显示不同的值



我是typescript的新手,只是在尝试打字脚本中的类型。

对于枚举数据类型,我尝试了以下代码:

enum colors {red=1,green=0,blue,white}; console.log(colors[1]);

,它打印"蓝""红色"

那么有人能解释一下,当按降序赋值时,enum的确切行为是什么吗?

当事情在运行时不清楚时,检查typescript代码的编译js通常是一个好主意。
在本例中:

var colors;
(function (colors) {
    colors[colors["red"] = 1] = "red";
    colors[colors["green"] = 0] = "green";
    colors[colors["blue"] = 1] = "blue";
    colors[colors["white"] = 2] = "white";
})(colors || (colors = {}));

可以看到,顺序1的枚举值用红色赋值,然后用蓝色覆盖。

如果你想为自己的序数赋值,那么你需要为枚举的所有值赋值:

enum colors { red=1, green=0, blue=2, white=3 }; 

编译为:

var colors;
(function (colors) {
    colors[colors["red"] = 1] = "red";
    colors[colors["green"] = 0] = "green";
    colors[colors["blue"] = 2] = "blue";
    colors[colors["white"] = 3] = "white";
})(colors || (colors = {}));