# 4471-实现Zip
# 题目描述
In This Challenge, You should implement a type Zip<T, U>
, T and U must be Tuple
type exp = Zip<[1, 2], [true, false]>; // expected to be [[1, true], [2, false]]
# 分析
这题看起来比较简单,输入两个元组,合并后生成新的元组。
实际也确实不难,只需要对元组遍历即可。只需要考虑元组数量不一致的特殊场景即可,根据用例的意思,任意一方长度不足,另一方多出来的元素均舍弃。
# 题解
type Zip<T, U> = T extends [infer TF, ...infer TR]
? U extends [infer UF, ...infer UR]
? // TF, UF 均存在的情况下,生成 [TF, UF],并递归处理剩余元素
[[TF, UF], ...Zip<TR, UR>]
: // 否则,直接返回 []
[]
: // 否则,直接返回 []
[];
# 知识点
- 元组遍历老套路:
A extends [infer F, ...R]
。