为什么enint in typescript在按降序分配整数时会显示不同的值?

时间:2016-09-18 06:30:43

标签: typescript enums

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

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

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

它打印'蓝色' 而不是' red'

所以有人可以解释在按降序分配值时枚举的确切行为吗?

1 个答案:

答案 0 :(得分:2)

如果在运行时事情不明确,通常最好检查打字稿代码的编译j。 在这种情况下:

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 = {}));