繁体   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