Skip to content

Shift

约 161 字小于 1 分钟

2022-12-01

题目

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']>>,
]

参考