arrays - TypeScript:定义未知大小的数组类型,其中第一个元素是 A 类型,其余元素是 B 类型
问题描述
我有一个函数,可以将 typeA
的元素与一些 type 的元素数组合并B
。
函数参数将类似于function merge<A, B>(elem: A, ar: B[])
. 结果可能类似于[A, B, B, B, ..., B]
. B 元素的数量以及总数组长度是未知的。
我知道我可以定义一个类似的类型,Array<A | B>
但这不会提供完整的类型安全性,因为任何元素都可以是A
or 或B
. 我也知道我可以定义诸如[A, B]
,[A, B, B]
之类的类型。但据我了解,这些只能用于已知大小的数组。
有没有办法像[A, B, B, B, ..., B]
TypeScript 一样定义类型?
解决方案
好的,找到了这个问题的答案。在从版本 3 开始的 typescript 中,您可以定义解构类型,例如[A, ...[B]]
它将给出所需的结果。
您可能还必须强制转换 return 语句as [A, ...[B]]
以避免类型错误。