Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按键动态访问typescript中的枚举_Typescript_Enums - Fatal编程技术网

按键动态访问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];
}