问题 #
在类型系统里实现 JavaScript 内置的 Array.concat
方法,这个类型接受两个参数,返回的新数组类型应该按照输入参数从左到右的顺序合并为一个新的数组。
举例,
type Result = Concat<[1], [2]> // expected to be [1, 2]
解答 #
type Concat<T extends unknown[], U extends unknown[]> = [...T, ...U]
拆分 #
T extends unknown[], U extends unknown[]
限制T
和U
都只能是数组类型- 通过解构形成新的数组类型
unknown
可以替换为any
但是unknown
的目的是未知类型,所用unknown
取代any
较为稳妥