为什么typescript中的枚举在按降序分配整数时显示不同的值?
我不熟悉类型脚本,只是尝试类型脚本中的类型 对于枚举数据类型,我尝试了以下代码为什么typescript中的枚举在按降序分配整数时显示不同的值?,typescript,enums,Typescript,Enums,我不熟悉类型脚本,只是尝试类型脚本中的类型 对于枚举数据类型,我尝试了以下代码 enum颜色{红色=1,绿色=0,蓝色,白色}; console.log(颜色[1]) 并且它打印的是'blue',而不是'red' 那么,有人能解释一下,当按降序分配值时,枚举的确切行为是什么吗?当运行时情况不清楚时,通常最好检查已编译的typescript代码的js。 在这种情况下: var colors; (function (colors) { colors[colors["red"] = 1] =
enum颜色{红色=1,绿色=0,蓝色,白色};
console.log(颜色[1])代码>
并且它打印的是'blue',而不是'red'
那么,有人能解释一下,当按降序分配值时,枚举的确切行为是什么吗?当运行时情况不清楚时,通常最好检查已编译的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 = {}));