我可以使用索引签名为枚举创建描述数组吗?

时间:2019-02-26 08:46:42

标签: typescript enums index-signature

假设我有以下枚举:

export enum ApiRole {
    User = 1,
    SuperUser = 2,
    Restricted = 3,
}

我是否可以轻松地创建一个数组,以便可以使用这些枚举值进行索引,从而返回可以用作描述的字符串值?

我已经尝试过了:

export const ApiRoleDescriptions: {[role: number]: string} = {
    1: 'Normal User',
    2: 'Super User',
    3: 'Restricted',
}

但是这种方法需要我手动设置每个枚举值的数值,这有点可维护性。

最终,我希望能够在代码的其他地方直接编写类似ApiRoleDescriptions[ApiRole.User]的内容。

编辑:看来在撰写本文时,我的问题的答案是否定的-至少直到this PR被合并到打字稿中为止,打字稿目前的里程碑是3.3 / 3.4。但是,与此同时,我仍在寻找某种方法来实现此目的。

1 个答案:

答案 0 :(得分:1)

您将这样声明:

PathCollection

export const ApiRoleDescriptions: {[k in ApiRole]: string} = { 1: 'Normal User', 2: 'Super User', [ApiRole.Restricted]: 'Restricted', } 将确保所有键都是已知的枚举值,并确保分配了所有值。

参考文献: