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