我想提取内部元素并创建一个新类型。例如,创建一个内部键类型:
interface temp{
a: {
"aa":number
}
b:{
"bb":number
}
}
动态创建内部类型,我使用:
type innerTemp={
[k in keyof temp[keyof temp]]:temp[keyof temp][k]
}
我也试过这样做:
type innerTemp={
[i in keyof T[k][k in keyof T]] : T[k][i]
}
但是它没有按我想要的方式工作。我想让内部接口变成
interface innerTemp{
aa:number,
bb:number,
}
谁能建议一种方法来动态创建内部类型?
这可以通过UnionToIntersection
类型实现:
type UnionToIntersection<U> =
(U extends any ? (k: U)=>void : never) extends ((k: infer I)=>void) ? I : never
type InnerTemp = {
[K in keyof UnionToIntersection<Temp[keyof Temp]>]:
UnionToIntersection<Temp[keyof Temp]>[K]
}
游乐场