zl程序教程

您现在的位置是:首页 >  Java

当前栏目

【类型挑战】Concat,难度⭐️

2023-02-18 16:41:25 时间

Dear,大家好,我是“前端小鑫同学”,?长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~

知识运用:

  1. 泛型约束输入类型;
  2. 数组解构参照ES6文档。 题目分析: 题目地址:533-easy-concat

本次案例相对简单,通过实现一个通用的类型工具支持将两个数组中包含的类型合并到一个数组集合中。功能类似于我们在JavaScript中的Array.concat函数。 题目解答: 测试用例:

  1. 依次将两个数组中的元素提取并按顺序进行整合。
  2. 当两个数组传入均为空的时候,我们得到的结果也将是一个空数组。
/* _____________ 测试用例 _____________ */
import { Equal, Expect } from '@type-challenges/utils'

type cases = [
  Expect<Equal<Concat<[], []>, []>>,
  Expect<Equal<Concat<[], [1]>, [1]>>,
  Expect<Equal<Concat<[1, 2], [3, 4]>, [1, 2, 3, 4]>>,
  Expect<Equal<Concat<['1', 2, '3'], [false, boolean, '4']>, ['1', 2, '3', false, boolean, '4']>>,
]
复制代码

答案及解析:

  1. 依据题目要求和测试用例得到我们设计的类型工具满足支持两个数组参数的传入,但数组的类型不做要求,这个我们还是用泛型来约束传入类型。分别约束类型T和U。
  2. 如何将两个数组展平后合并到一个数组里面呢?这里需要使用到的知识点依旧是数组解构,使用解构将直接展平我们的一维数组,分别将两个展平的数组放到索引0和1的位置,最后得到的结果将满足所提供的4条测试用例。
/* _____________ 你的代码 _____________ */
type Concat<T extends any[], U extends any[]> = [...T, ...U];
复制代码

去演练场验证答案

接下来的一题是:【类型挑战】Includes,难度⭐️