为什么会产生错误“其余元素类型必须是数组类型”?
type QWE<T extends [number, string]> = [boolean, ...T]
^^^^ the error is here
在3.0之前,我们无法将元组或泛型类型参数散布到函数中,因此必须将其实现。同样,当前在元组中的其余部分仅支持数组,没有人实现将其他元组扩展到给定元组的其余部分的功能,而我猜测实现它需要大量的工作和复杂性。
要在另一个已知元组的末尾添加元组,我们可以使用以下功能:将元组分布到一个函数中,然后将参数类型提取为元组。
type ArgumentTypes<T extends (...a: any) => any> =
T extends (...a: infer A) => any ? A : never;
type QWE<T extends [number, string]> =
ArgumentTypes<(a: boolean, ...r: T) => void>
type R = QWE<[number, string]>
在开始时添加元组存在更多问题,我相信有一些非常不推荐的技巧可以使用递归类型别名来实现。您还可以定义多个条件以在一个元组中最多支持多个元素,但如果可能的话,我会避免使用
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句