考虑这样的元组:
type MyTuple = [A, B];
where A
and 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"]
}
但这行不通。
这个问题是inverse of Typescript:对象类型到数组类型(元组)
这将产生所需的效果。您需要映射元组的所有键属性并提取每个键的元组成员:
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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)