我是打字稿的新手,只是在类型脚本中尝试类型。
对于枚举数据类型,我尝试了以下代码。
enum colors {red=1,green=0,blue,white};
console.log(colors[1]);
它打印'蓝色' 而不是' red' 。
所以有人可以解释在按降序分配值时枚举的确切行为吗?
答案 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 = {}));