Enum to String Lookup Object - >没有索引签名

时间:2017-09-21 21:52:01

标签: typescript enums

我试图将枚举映射到字符串:

enum Status {
    NEW = "NEW",
    INPROCESSING = "IN PROCESSING",
    DONE = "DONE"
};

const statusToColor: { [key in Status ]: string } = {
    "NEW": "blue",
    "IN PROCESSING": "yellow",
    "DONE": "green"
}

到目前为止,一切都很好。 但是当我尝试:

编辑:似乎我把问题简化了很多,因为实际问题似乎仍然在其他地方:

当我尝试输入" statusToColor"时,只会发生没有索引错误。来自数组,如下:

const statusArrayToColors = (statusArray: Status[]): string[] => {
    return statusArray.map(status => statusToColor[status])
}

在这种情况下

statusToColor[status]
根据编译器,

没有索引签名。

1 个答案:

答案 0 :(得分:2)

您的代码有拼写错误。这适用于我Version 2.5.0-dev.20170629

enum Status {
    NEW = "NEW",
    INPROCESSING = "IN PROCESSING",
    DONE = "DONE"
};

const statusToColor: { [key in Status ]: string } = {
    "NEW": "blue",
    "IN PROCESSING": "yellow",
    "DONE": "green"
}

const color: string = statusToColor[Status.NEW];

检查statusToColor行。要定义类型,您必须使用冒号:,而不是=

注意:you need at least typescript version 2.4.