koSakano/type-challenges

3196 - Flip Arguments

Opened this issue · 0 comments

type Reverse<T> = T extends [...rest: infer R, last: infer L] ? [first: L, ...rest: Reverse<R>] : T
type FlipArguments<T extends (...params: any) => any> = T extends (...params: infer P) => infer R ? (...params: Reverse<P>) => R : T