Skip to main content

4471 - Zip

Answer TestCases

实现一个类型 Zip<T, U>,T 和 U 必须是元组。 例如:

Zip<[1, 2], [true, false]> // expected to be [[1, true], [2, false]]
Zip<[1, 2, 3], ['1', '2']> // expected to be [[1, '1'], [2, '2']]

Solution

type Zip<
T extends any[],
U extends any[],
C extends 0[] = []
> = C['length'] extends T['length'] | U['length']
? []
: [[T[C['length']], U[C['length']]], ...Zip<T, U, [...C, 0]>]

本题目和 4425 题有些相似。

Zip 类型定义中, 泛型 C 的长度表示当前递归次数, 如果次数达到了 TU 的长度表示递归结束。

否则, 构造数组子元素。