将任何值解析为枚举[重复]

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 的解决方案。

以上是关于将任何值解析为枚举[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在枚举中获取枚举值的 int [重复]

将枚举值作为参数的通用 C# 方法[重复]

PHP:带有值的枚举[重复]

采用任何枚举的方法[重复]

枚举值返回为数字 [重复]

c#枚举是不是可以出现重复值