Typescript自定义映射类型

Typescript自定义映射类型,typescript,Typescript,我正试图找到一个映射的类型,将对象的属性从类型向量转换为数组 我现在有这个 type ToArray<T> = { [P in keyof T]: T[P] extends Vector<any> ? Array<any> : T[P] } 键入ToArray={ [P in keyof T]:T[P]扩展向量?数组:T[P] } 如何正确映射任何类型?我希望保留原始泛型类型。您可以使用条件类型的推理行为将原始参数获取到Vector: type

我正试图找到一个映射的
类型
,将对象的属性从类型
向量
转换为
数组

我现在有这个

type ToArray<T> = { 
   [P in keyof T]: T[P] extends Vector<any> ? Array<any> : T[P] 
}
键入ToArray={
[P in keyof T]:T[P]扩展向量?数组:T[P]
}

如何正确映射
任何
类型?我希望保留原始泛型类型。

您可以使用条件类型的推理行为将原始参数获取到
Vector

type ToArray<T> = { 
   [P in keyof T]: T[P] extends Vector<infer U> ? Array<U> : T[P] 
}
键入ToArray={
[P in keyof T]:T[P]扩展向量?数组:T[P]
}

有关
inferu
的详细信息,请参阅“条件类型中的类型推断”一章。

Woooh,太棒了。非常感谢。如果我编写
ToArray
,并且遗漏了其中一个字段,编译器不会警告我。这正常吗?@LppEdd你说错过一个场地是什么意思?你不是都选了吗?或者你漏拼了其中一个?我的意思是我没有全部用
{one:…,two:…}
@LppEdd然后是的,
Pick
根据它的性质,意味着你想要选择一些任意字段,编译器无法知道是哪个字段。如果需要,可以筛选特定类型的字段。。我会很快给出答案。