实现Push

45 阅读1分钟

题目描述 🎯

实现一个Push<Arr, Ele>类型,将类型Ele添加到类型数组Arr的末尾。

题目分析 📝

// 期望的结果示例:
type Result1 = Push<[1, 2], 3> // [1, 2, 3]
type Result2 = Push<[], 1> // [1]

解题思路 💡

  1. 首先需要定义一个接收两个泛型参数的类型:
  • Arr: 原始数组类型。
  • Ele: 要添加的元素类型。
  1. 使用TypeScript的展开运算符...来构建新的元组类型。

代码实现 ⌨️

type Push<Arr extends unknown[], Ele> = [...Arr, Ele]

解题详解 🔍

1. 类型参数解析

Arr extends unknown[] // 确保 Arr 是一个数组类型
Ele // 要添加的元素类型

2. 实现步骤解析

[...Arr, Ele] // 使用展开运算符复制原数组的所有元素,然后添加新元素

3. 测试示例

type Push<Arr extends unknown[], Ele> = [...Arr, Ele]

// 测试1:向非空数组添加元素
type Test1 = Push<[1, 2], 3>
// 结果:[1, 2, 3]
// 解析:[...[1, 2], 3] 展开 [1, 2] 并添加 3

// 测试2:向空数组添加元素
type Test2 = Push<[], 1>
// 结果:[1]
// 解析:[...[], 1] 展开 [] 并添加 1

多元素Push 🌈

// 一次推入多个元素
type PushMany<
  Arr extends unknown[], 
  Items extends unknown[]
> = [...Arr, ...Items];

// 示例
type Result = PushMany<[1, 2], [3, 4, 5]>;
// 结果: [1, 2, 3, 4, 5]

🎯 相关题目练习

  1. 实现Unshift
Unshift<[1, 2], 0> // 结果: [0, 1, 2]