ghaiklor / type-challenges-solutions

Solutions for the collection of TypeScript type challenges with explanations
https://ghaiklor.github.io/type-challenges-solutions/
Creative Commons Attribution 4.0 International
471 stars 56 forks source link

type-challenges-solutions/en/medium-shift #325

Open utterances-bot opened 1 year ago

utterances-bot commented 1 year ago

Shift

This project is aimed at helping you better understand how the type system works, writing your own utilities, or just having fun with the challenges.

https://ghaiklor.github.io/type-challenges-solutions/en/medium-shift.html

dca123 commented 1 year ago

There is a new case

// @ts-expect-error
Shift<unknown>

Constraining the generic as an array seems to do the trick!

type Shift<T extends any[]> = T extends [infer S, ...infer T] ? T : T extends [] ? [] : never