我有非常简单的代码:

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/

10-16 19:51