考虑这样的元组:
type MyTuple = [A, B];
其中A
和B
都有一个名为key
的属性。例如,
interface A = {
key: 'sandwiches'
}
interface B = {
key: 'pasta'
}
我希望使用以下界面:
interface Result {
sandwiches: A;
pasta: B;
}
有没有办法动态地做到这一点?
我在想,如果可以实现,它可能看起来像这样:
type MapTuple<T> = {
[K in keyof T]: T[K]["key"]
}
但这不起作用。
的逆答案 0 :(得分:6)
这将产生所需的效果。您需要映射元组的所有键属性,并为每个键提取元组成员:
type MyTuple = [A, B];
interface A {
key: 'sandwiches'
}
interface B {
key: 'pasta'
}
type MapTuple<T extends Array<{ key: string }>> = {
[K in T[number]['key']]: Extract<T[number], { key : K}>
}
type R = MapTuple<MyTuple>