![](/img/trans.png)
[英]In Typescript how do you get an element type from an array type, when the array contains different element types?
[英]TypeScript Mapped Types: Get element type of array
假設容器類型具有未知/生成類型T1
、 T2
等的數組屬性(短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.