在枚举中使用string中的字符串中的<any>

时间:2015-11-13 00:46:47

标签: typescript

我已经过了以下片段来支持带字符串的枚举

enum Color {
    red = <any>"red", green = <any>"green", Blue = <any>"blue"
}

我们需要它的手段和原因是什么?

1 个答案:

答案 0 :(得分:5)

  

是什么意思

Typescript枚举只是number个。因此,如果您分配一个字符串,编译器会抱怨。

enum Color {
    red = "red" // error `string` is not assignable to color
}

但是使用any你告诉编译器 shhhh ......我知道更好More on this

注意:如果这样做,您可能需要再次使用编译器,例如:

enum Color {
    red = <any>"red" // shhhh
}

var foo = Color.red; // okay
foo = 123; // okay: TypeScript still thinks red is a number  
foo = "red"; // Error
foo = <any>"red"; // shhhhh

真正的断言

enter image description here

基于备用字符串的枚举

  

为什么我们需要它

如果你想要基于字符串的枚举。我个人现在使用这种模式:https://basarat.gitbooks.io/typescript/content/docs/tips/stringEnums.html

使用typescript 1.8,会有头等支持,例如

type Foo = "a" | "b";