typescript - 我可以使用索引签名为枚举创建一组描述吗?
问题描述
假设我有以下枚举:
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]
直接在我的代码中的其他地方编写类似的东西。
编辑:在撰写本文时,我的问题的答案似乎是否定的 - 至少在此 PR合并到 typescript 之前,它目前具有 3.3/3.4 的里程碑。但是,与此同时,我仍在寻找某种方法来完成此任务。
解决方案
你可以这样声明:
export const ApiRoleDescriptions: {[k in ApiRole]: string} = {
1: 'Normal User',
2: 'Super User',
[ApiRole.Restricted]: 'Restricted',
}
in ApiRole
将确保所有键都具有已知的枚举值并且所有值都已分配。
参考:
推荐阅读
- swift - 在视频应用程序中获取视频数据
- c# - Jquery FullCalendar 不适用于控制器上的 URL
- vuex - 为什么我们必须分离状态/突变/动作?
- wordpress - 有没有办法将 2 个域转发到 1 个 htaaccess 文件中的 HTTPS 地址?
- android - 如何创建“打字”风格的界面?
- r - 使用带有颜色的 geom_path 时的间隙
- html - 引导列在 chrome 中是正确的,但在 Internet Explorer 11 中不呈现。?
- node.js - 节点在 dockerized 节点应用程序中找不到 node_modules
- python - 子图 x 次数取决于数组的长度
- python - 未找到参数 '('',)' 的 'quiz_change' 反向。尝试了 1 种模式:['suppliers/quiz/(?P
[0-9]+)/$']