# 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>]
    : // 否则,直接返回 []
      []
  : // 否则,直接返回 []
    [];

# 知识点

  1. 元组遍历老套路: A extends [infer F, ...R]
Last Updated: 2023/5/16 06:00:28