簡體   English   中英

TypeScript 映射類型:獲取數組的元素類型

[英]TypeScript Mapped Types: Get element type of array

假設容器類型具有未知/生成類型T1T2等的數組屬性(短T* ):

interface MultiContainer
{
    Item1: T1[];
    Item2: T2[];
    ...
}

是否可以使用映射類型派生以下類型

interface SingleContainer
{
    Item1: T1;
    Item2: T2;
    ...
}

我正在尋找一些表達式,如:

type SingleContainer =
    { [ P in keyof MultiContainer ]: MultiContainer[P] }
                                            └─────────── returns T*[] instead of T*  

MultiContainer[P]返回類型T*[]但我需要一個返回T*的表達式

提前致謝!

我相信這可以滿足您的需求:

type SingleContainer = {[P in keyof MultiContainer]: MultiContainer[P][0]}

從 TS 2.8 開始,可以使用infer關鍵字:

type SingleContainer = {
  [P in keyof MultiContainer]: MultiContainer[P] extends (infer T)[] ? T : never
};

暫無
暫無

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

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