export enum MyEnum{
Option1,
Option2,
Option3
}
string x = 'Option1';
Run Code Online (Sandbox Code Playgroud)
MyEnum[x]
抛出错误:
类型字符串不可分配给类型 MyEnum
然而:
MyEnum['Option1']
作品。
我需要使用MyEnum[x]
(在一个返回 MyEnum 的方法中),其中 x 是一个计算值,它导致一个有效的枚举选项,我该怎么做?
Son*_*yen 28
有两种优雅的方法可以实现这一目标
??第一种方法:只需关闭下一行的类型检查,这类似于在@annepic 的回答中将 MyEnum 的类型断言为 <any>
// @ts-ignore
MyEnum[x]
Run Code Online (Sandbox Code Playgroud)
?? 第二:如果你还想保留TS强大的类型检查功能,选择这个
MyEnum[x as keyof typeof MyEnum]
Run Code Online (Sandbox Code Playgroud)
typeof MyEnum
将创建一个interface
代表MyEnum
幕后对象的 ,keyof
并将返回字符串文字的联合,每个字符串都是MyEnum
对象中的键(换句话说,keyof
将返回特定对象的键列表)。
您声明字符串 x 变量错误。你应该做这个:
export enum MyEnum{
Option1,
Option2,
Option3
}
var x = 'Option1';
MyEnum[x];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13372 次 |
最近记录: |