我正在寻找一种自定义类型,该类型将允许我使用来自枚举的键创建对象,并且所有这些都与特定接口的值匹配。有没有一种简单的方法可以在下面创建Custom
类型?
enum MyKeys {
ALPHA = 'ALPHA',
BETA = 'BETA',
GAMMA = 'GAMMA',
}
interface MyValues {
in: any[];
out: any[];
}
type Example = Custom<MyKeys, MyValues>
应针对:
{
[MyKeys.ALPHA]: {
in: []
out: []
},
[MyKeys.BETA]: {
in: []
out: []
},
[MyKeys.GAMMA]: {
in: []
out: []
}
}
答案 0 :(得分:2)
您只是从the standard library中寻找Record<K, V>
类型。这是mapped type,其中值类型不依赖于键。在TypeScript 2.6中,added是在TypeScript中使用基于字符串的枚举作为键类型的功能。
让我们看看它的作用:
type Example = Record<MyKeys, MyValues>
const ex: Example = {
[MyKeys.ALPHA]: {
in: [],
out: []
},
[MyKeys.BETA]: {
in: [],
out: []
},
[MyKeys.GAMMA]: {
in: [],
out: []
}
}; // works
看起来不错。希望能有所帮助;祝你好运。