Shift
题目
Github: Shift
实现 Array.shift
的类型版本
type Result = Shift<[3, 2, 1]> // [2, 1]
解题思路
略。
答案
type Shift<T extends unknown[]> = T extends [infer _, ...infer O] ? O : T
验证
type cases = [
// @ts-expect-error
Shift<unknown>,
Expect<Equal<Shift<[]>, []>>,
Expect<Equal<Shift<[1]>, []>>,
Expect<Equal<Shift<[3, 2, 1]>, [2, 1]>>,
Expect<Equal<Shift<['a', 'b', 'c', 'd']>, ['b', 'c', 'd']>>,
]