5

我尝试使用枚举值作为数组的索引,但它给了我一个错误。

export class Color {
    static RED = 0;
    static BLUE = 1;
    static GREEN = 2;
}

let x = ['warning', 'info', 'success'];
let anotherVariable = x[Color.RED]; <---- Error: Type 'Color' cannot be used as an index type.

我尝试了 Number() 和 parseInt 来转换为数字,但它不起作用。

有什么方法可以使用枚举值作为索引?

4

2 回答 2

2

要创建 Enum,我们创建一个 const 冻结对象。有关差异以及原因,请参见以下引用:

const 适用于绑定(“变量”)。它创建一个不可变的绑定,即您不能为绑定分配一个新值。

Object.freeze 作用于值,更具体地说,作用于对象值。它使对象不可变,即您不能更改其属性。

来自:https ://stackoverflow.com/a/33128023/9758920

之后我们仍然可以像使用普通对象一样访问键和值。

// https://stackoverflow.com/questions/287903/what-is-the-preferred-syntax-for-defining-enums-in-javascript
const COLORS = Object.freeze({"RED":0, "BLUE":1, "GREEN":2})

let x = ['warning', 'info', 'success'];
let anotherVariable = x[COLORS.RED]; 

console.log(anotherVariable)

另请查看:https ://stackoverflow.com/a/49309248/9758920

于 2019-07-08T07:40:42.870 回答
0

尝试这个。

    let color = {
        RED : 0,
        BLUE : 1,
        GREEN : 2
    }

    module.exports = color

    let x = ['warning', 'info', 'success'];
    let anotherVariable = x[color.RED];
于 2019-07-08T07:40:05.920 回答