将任何值解析为枚举[重复]
Posted
技术标签:
【中文标题】将任何值解析为枚举[重复]【英文标题】:Parse any value to enum [duplicate] 【发布时间】:2021-10-24 00:30:10 【问题描述】:在 Angular 12 应用程序中,我有枚举:
export enum Policy
Admin,
Manager
我尝试如下定义一个 Policy 类型的变量:
let policy: Policy = Policy[route.data.policy as string];
route.data.policy
的类型是any
。但我得到了错误:
元素隐式具有“任意”类型,因为索引表达式不是“数字”类型。
如何将 'Admin'
或 'Manager'
的 route.data.policy 的值解析为枚举?
【问题讨论】:
TL;DR:let policy: Policy = Policy[route.data.policy as keyof typeof Policy];
TS Playground
【参考方案1】:
您可以只为键添加一个值,以便 Manager = 'Manager'
这会转换枚举,因此它会在 []
括号中使用字符串,而不是基于索引的默认数字。
【讨论】:
【参考方案2】:如果您将route.data.policy
输入为Policy
会怎样?然后你就可以了,
let policy: Policy = route.data.policy;
【讨论】:
你的意思是let policy: Policy = route.data.policy as Policy
?我不知道我可以这样解析它。
这实际上可能有效,但我的意思是转到您定义 route.data.policy 的任何位置并将该字段键入为 Policy。
我不能。我从 Angular 方法中得到 route.data.policy
。
啊,我明白了。我的错。那么我推荐@Heretic Monkey 的解决方案。以上是关于将任何值解析为枚举[重复]的主要内容,如果未能解决你的问题,请参考以下文章