[英]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.