字符串枚举"的查找对象没有索引签名"

时间:2018-03-23 23:18:01

标签: typescript

我有一个字符串枚举,其值应与显示名称相关联,如下所示:

enum MyEnum {
  key1 = 'one',
  key2 = 'two',
  key3 = 'three',
}

const myKey: MyEnum = 'two' as MyEnum; // This value is only known at runtime

const lookupResult = {
  [MyEnum.key1]: 'display name for key1',
  [MyEnum.key2]: 'display name for key2',
}[myKey];

但我使用查找对象会产生此错误:

  

TS7017:元素隐含地有一个'任何'输入因为类型' {   [MyEnum.key1]:string; [MyEnum.key2]:string; }'没有索引   签名。

如何在没有错误的情况下将myKey与其显示名称匹配?

我可能根本不使用枚举吗?在各种情况下,我需要枚举值和显示名称。

1 个答案:

答案 0 :(得分:0)

只需使用枚举密钥。

enum MyEnum {
  key1 = 'one',
  key2 = 'two',
  key3 = 'three',
}

const lookupResult = {
  [MyEnum.key1]: 'display name for key1',
  [MyEnum.key2]: 'display name for key2',
}[MyEnum.key2];