繁体   English   中英

使用枚举值作为接口中的键

[英]Use Enum values as a key in interface

我正在努力创建一个使用枚举值的接口。

enum TestEnum {
  'VAL1' = 'TEST1',
  'VAL2' = 'TEST2'
}

interface IMyInterface {
  [TestEnum[key in TestEnum]]: {
    // some code
  }
}

const objToType: IMyInterface = {
  TEST1: { / ** \ }
  TEST2: { / ** \ }
}

它抛出一个错误

类型文字中的计算属性名称必须引用其类型为文字类型或“唯一符号”类型的表达式。

这里有什么问题?

我认为令人困惑的是[key in TestEnum]返回枚举的“值”而不是“键”(如果您想迭代您将使用的键[key in keyof TestEnum] )。

使用type声明而不是接口声明很容易做到这一点:

enum TestEnum {
  'VAL1' = 'TEST1',
  'VAL2' = 'TEST2'
}

type IMyInterface = {
  [key in TestEnum]: { /* */ }
}

const objToType: IMyInterface = {
  TEST1: { },
  TEST2: { }
}

游乐场链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM