더북(TheBook)
type Reverse<T> = T extends [...infer L, infer R] ? [R, ...Reverse<L>] : [];
type FlipArguments<T> = T extends (...args: infer A) => infer R
  ? (...args: Reverse<A>) => R
  : never;
type Flipped = FlipArguments<(a: string, b: number, c: boolean) => string>;
// type Flipped = (args_0: boolean, args_1: number, args_2: string) => string

반환값과 매개변수의 타입을 추론한 뒤, 매개변수에 Reverse 타입을 적용했습니다. A는 이미 매개변수의 튜플인 상태라 바로 Reverse 타입을 적용할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.