假设容器类型的数组属性为未知/生成类型T1
,T2
等(短T*
):
interface MultiContainer
{
Item1: T1[];
Item2: T2[];
...
}
是否可以使用maped types派生以下类型:
interface SingleContainer
{
Item1: T1;
Item2: T2;
...
}
我正在寻找一些表达方式:
type SingleContainer =
{ [ P in keyof MultiContainer ]: MultiContainer[P] }
└─────────── returns T*[] instead of T*
MultiContainer[P]
返回类型T*[]
,但我需要一个返回T*
的表达式
提前致谢!
答案 0 :(得分:2)
我相信这可以满足您的需求:
type SingleContainer = {[P in keyof MultiContainer]: MultiContainer[P][0]}
答案 1 :(得分:1)
从TS 2.8开始,可以使用infer
关键字:
type SingleContainer = {
[P in keyof MultiContainer]: MultiContainer[P] extends (infer T)[] ? T : never
};