以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - TypeScript 类型谜题
29. implement Shift<T>

解答:

可以使用tuple的内置类型inferrest来实现。

代码如下:

type Shift<T extends any[]> = T extends [infer _, ...infer Rest] ? Rest : []

其中,T extends [infer _, ...infer Rest]用来匹配非空的tuple,而_代表tuple的第一个元素,Rest代表剩余的元素组成的tuple。如果T是空的,就返回空的tuple[]

测试代码:

type A = Shift<[1,2,3]> // [2,3]
type B = Shift<[1]> // []
type C = Shift<[]> // []

测试结果:

type A = [2, 3]
type B = []
type C = []