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