Zip
题目
In This Challenge, You should implement a type Zip<T, U>
, T and U must be Tuple
ts
type exp = Zip<[1, 2], [true, false]>; // expected to be [[1, true], [2, false]]
解答
递归处理给定的两个元组类型:
每次提取 T[0]
和 U[0]
,组合成 [T[0], U[0]]
,
并将剩余的 item
继续递归,最终再返回为元组:[[T[0], U[0]], ...Zip<TRest, URest>]
,
递归期间,
若 T
为 []
,则返回 []
,
若 U
为 []
,则返回 []
。
ts
type Zip<T extends unknown[], U extends unknown[]> = T extends [
infer A,
...infer B
]
? U extends [infer M, ...infer N]
? [[A, M], ...Zip<B, N>]
: []
: [];