题目描述 🎯
实现一个Push<Arr, Ele>类型,将类型Ele添加到类型数组Arr的末尾。
题目分析 📝
// 期望的结果示例:
type Result1 = Push<[1, 2], 3> // [1, 2, 3]
type Result2 = Push<[], 1> // [1]
解题思路 💡
- 首先需要定义一个接收两个泛型参数的类型:
Arr: 原始数组类型。Ele: 要添加的元素类型。
- 使用
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]
🎯 相关题目练习
- 实现
Unshift
Unshift<[1, 2], 0> // 结果: [0, 1, 2]