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 타입을 적용할 수 있습니다.

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