打字稿中枚举数的输出异常

任何人都可以从下面的代码解释我得到的输出?

enum days {sun = 1,mon = 0,tues};

的console.log(天[1]); //返回tues //预期输出 – mon
的console.log(天[0]); //返回mon //预期输出 – sun

另外,请解释一下如何在这种情况下打印太阳?这种情况令我感到困惑.请求您在执行代码并观察输出后才能提供有效的解释.

最佳答案 这个打字稿:

enum days { sun = 1, mon = 0, tues };

compiles到这个javascript:

var days;
(function (days) {
    days[days["sun"] = 1] = "sun";
    days[days["mon"] = 0] = "mon";
    days[days["tues"] = 1] = "tues";
})(days || (days = {}));
;

第一部分:天[天[太阳]] = 1] =“太阳”;

首先评估天[“太阳”] = 1,其中:

>确保您能够调用days.sun并获得值1
>返回键“sun”=>处设置的值这意味着最初的日期[1]将被设置为“太阳”.

第二部分:days [days [“mon”] = 0] =“mon”;

>确保您能够调用days.mon并获得值0
>返回键“mon”=>处设置的值0.所以days [0]将被设置为“mon”.

然而,第三部分:days [days [“tues”] = 1] =“tues”;

评估天[“tues”] = 1

>确保您能够调用days.tues并获得值1
>还返回键“tues”=>处设置的值1

这意味着此时[1]将被覆盖值“tues”

点赞