按键动态访问typescript中的枚举
按键动态访问typescript中的枚举,typescript,enums,Typescript,Enums,MyEnum[x]引发错误: 类型字符串不可分配给类型MyEnum 然而: MyEnum['Option1'] 我需要使用MyEnum[x]但是(在一个返回MyEnum的方法中),其中x是一个计算出的值,它会导致一个有效的枚举选项,我该怎么做呢 您将字符串x变量声明为错误。您应该这样做: export enum MyEnum{ Option1, Option2, Option3 } string x = 'Option1'; 让它这样工作:return(MyEnum
MyEnum[x]
引发错误:
类型字符串不可分配给类型MyEnum
然而:
MyEnum['Option1']
我需要使用
MyEnum[x]
但是(在一个返回MyEnum的方法中),其中x是一个计算出的值,它会导致一个有效的枚举选项,我该怎么做呢 您将字符串x变量声明为错误。您应该这样做:
export enum MyEnum{
Option1,
Option2,
Option3
}
string x = 'Option1';
让它这样工作:
return(MyEnum)[x]代码>我认为您需要的是在枚举中显式地键入所选项作为该枚举。例如:
export enum MyEnum{
Option1,
Option2,
Option3
}
var x = 'Option1';
MyEnum[x];
导出枚举MyEnum{
选择1,
选择2,
选择3
}
函数getEnum(x='Option1'):MyEnum{
返回MyEnum[x];
}
您引用的错误“类型字符串不可分配给类型MyEnum”实际上来自与枚举不匹配的函数返回类型。其他一些解决方案将枚举转换为对象,但与返回类型相同的枚举的函数不兼容。有两种优雅的方法可以实现这一点,谢谢,但它不是这样工作的。x是在方法之外计算的,所以可能这就是原因。有趣的是,如果我之前给x一个'Opt'+'ion1'值,MyEnum[x]会突出显示语法错误。连接提供了一个有效的值,但typescript并不关心分析它,而是直接显示语法错误。const key=calculatedkey();返回对象(MyEnum)[key];为meLove工作的typeof
combo@vancy-谢谢你,爱你
export enum MyEnum{
Option1,
Option2,
Option3
}
function getEnum(x = 'Option1'):MyEnum {
return <MyEnum>MyEnum[x];
}