假设有一个容器类型,其包含未知/生成类型 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*
提前致谢!
Flat<T>
类型:type Flat<T> = { [P in keyof T]: T[P] extends (infer A)[] ? A : T[P]; }
。 用法:interface MixedContainer { Item1: T1; Item2: T2[] }; type FlatContainer = Flat<MixedContainer>; // { Item1: T1; Item2: T2 }
加入一些字符串模板类型,甚至可以从{ Items: T1[] }
转换为{ Item: T1 }
。 - wensveen