打字稿中的开放式枚举问题

时间:2017-02-14 10:45:45

标签: typescript enums

Typescript Enums是基于数字的,也是开放式的。这意味着我可以拥有

enum Color {
   Red = 0,
   Green,
   Blue
}

enum Color {
   Black
}

这里的问题是,现在我将Color.Red与值0相关联,Color.Black也与值0相关联。我希望Color.Black与下一个可用值3相关联。显然修复是容易,但行为很奇怪,可能会导致错误。这是语言问题还是由于其他原因而发生?

1 个答案:

答案 0 :(得分:1)

似乎是语言中的错误。如果省略Red的初始化,TypeScript将抛出错误。但如果你初始化它就不会。

The output is definitely broken

enum One {
  Foo = 0,
  Bar
}

enum One {
  Baz
}

将转移到

var One;
(function (One) {
    One[One["Foo"] = 0] = "Foo";
    One[One["Bar"] = 1] = "Bar";
})(One || (One = {}));
(function (One) {
    One[One["Baz"] = 0] = "Baz";
})(One || (One = {}));

这显然不是你想要的结果:)