簡體   English   中英

在打字稿中創建一種嵌套的內部對象鍵

[英]Create a type of nested inner object keys in 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]
}

操場

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM