Skip to main content

Unshift

实现类型版本的 Array.unshift。


type Result = Unshift<[1, 2], 0> // [0, 1, 2,]
/**
* 思路:
* 1. 利用 extends 约束数组只读 并且是个数组
* 2. 有两个参数 利用扩展运算符展开数组的内容 和 即新增的元素
*/

type Push<T extends readonly unknown[], U> = [...T, U];
type Unshift<T extends readonly unknown[], U> = T extends readonly [...infer Q]
? [U, ...Q]
: never;