![](/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.