Color[Color["Red"] = 0] = "Red";怎么解释?

enum Color {Red, Green, Blue};
var Color;
(function (Color) {
    Color[Color["Red"] = 0] = "Red";
    Color[Color["Green"] = 1] = "Green";
    Color[Color["Blue"] = 2] = "Blue";
})(Color || (Color = {}));

这是typescript里enum类型的源码,看不懂Color[Color["Red"] = 0] = "Red"这什么意思?

阅读 3.1k
2 个回答

typescript的枚举类型,这是为了在编码的时候不出现魔术数使用的一种方式,你可以理解成

var color = {
    red: 0,
    0: 'red',
    green: 1,
    1: 'green'
}

var userChooseColorData = 0 // 用户选了一个编码为0的颜色
if(userChooseColor === color.red){
    // 通过color.red能够让代码更加直观,即使其他程序员不了解0,1,2分别代表什么颜色,也能通过这种方式明白你在代码里面像表达的意思
    // 同理当我们需要得到具体颜色的时候可以使用 color[userChooseColorData] 得到
    // 以上理论出自<<代码整洁之道>>
}

PS:最后补充,编译之后的代码基本上是给机器来读的,我们应该花更多的时间去理解编译之前的源代码,理解这样写的原理,以及用法,等到理解了用法,再去看编译后的源代码会觉得豁然开朗

Color[0] = "Red";
Color.Red = 0;

没什么意思,就是让名字(Red)和数值(0)可以互相查找。

推荐问题