首页 > 解决方案 > TypeScript:定义未知大小的数组类型,其中第一个元素是 A 类型,其余元素是 B 类型

问题描述

我有一个函数,可以将 typeA的元素与一些 type 的元素数组合并B

函数参数将类似于function merge<A, B>(elem: A, ar: B[]). 结果可能类似于[A, B, B, B, ..., B]. B 元素的数量以及总数组长度是未知的。

我知道我可以定义一个类似的类型,Array<A | B>但这不会提供完整的类型安全性,因为任何元素都可以是Aor 或B. 我也知道我可以定义诸如[A, B],[A, B, B]之类的类型。但据我了解,这些只能用于已知大小的数组。

有没有办法像[A, B, B, B, ..., B]TypeScript 一样定义类型?

标签: arraystypescript-typings

解决方案


好的,找到了这个问题的答案。在从版本 3 开始的 typescript 中,您可以定义解构类型,例如[A, ...[B]]它将给出所需的结果。

您可能还必须强制转换 return 语句as [A, ...[B]]以避免类型错误。


推荐阅读