在typescript中创建一个嵌套的内部对象键



我想提取内部元素并创建一个新类型。例如,创建一个内部键类型:

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]
}

游乐场

最新更新