我有非常简单的代码:
enum Color { BLUE, RED }
class Brush {
color: Color
constructor(values) {
this.color = values.color
}
}
let JSON_RESPONSE = `{"color": "BLUE"}`
let brush = new Brush(JSON.parse(JSON_RESPONSE))
现在我要检查一下:
console.log(brush.color === Color.BLUE)
然后返回
false
。我尝试了几种组合
brush.color === Color[Color.BLUE]
但是,当然会出现编译器错误。
问题是如何对
enum === enum
进行基本的比较? 最佳答案
问题在于TypeScript enum
实际上是“命名的数字常量”。
从the TypeScript documentation on enum
s:
您应该使用string literal types代替:
type Color = "BLUE" | "RED";
完整代码(View Demo):
type Color = "BLUE" | "RED";
class Brush {
color: Color
constructor(values) {
this.color = values.color
}
}
let JSON_RESPONSE = `{"color": "BLUE"}`
let brush = new Brush(JSON.parse(JSON_RESPONSE))
console.log(brush.color === "BLUE"); //=> true
关于javascript - 在TypeScript中将值与枚举进行比较并不明显,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43011707/