问题 #
在这个挑战中,应该实现一个类型 Zip<T,U>
,T
和 U
必须是 Tuple
type case1 = Zip<[], []> // []
type case2 = Zip<[1, 2], [true, false]> // [[1, true], [2, false]]
type case3 = Zip<[1, 2, 3], ['1', '2']> // [[1, '1'], [2, '2']]
type case4 = Zip<[], [1, 2, 3]> // []
type case5 = Zip<[[1, 2]], [3]> // [[[1, 2], 3]]
解答 #
type Zip<T extends any[], U extends any[]> =
T extends [infer TF,...infer TR]?
U extends [infer UF,...infer UR]?
[[TF,UF],...Zip<TR,UR>]
:[]
:[]
拆分 #
- 逐个拆分数组然后递归调用