타입 챌린지 3196 - Flip Arguments

소파의 벨로그·2025년 4월 16일

타입챌린지

목록 보기
57/131

문제 링크

문제

lodash의 _.flip을 구현해라

FlipArguments<T>는 함수 타입 T를 필요로하고, 같은 리턴 타입이지만 파라미터가 뒤집어진(reverse된) 함수를 반환한다

Implement the type version of lodash's _.flip.

Type FlipArguments<T> requires function type T and returns a new function type which has the same return type of T but reversed parameters.

내 풀이

type Reverse<T extends any[]>=
  T extends [... infer Rest,infer Last]?
    [Last,...Reverse<Rest>]
  :T
type FlipArguments<T extends (...args:any[])=>any> =
  T extends (...args:infer U)=>infer R? 
 (...args:Reverse<U>)=>R
 :never

어제 구현한 reverse 풀이를 일부 차용했다.

parameter에 infer를 넣어 사용했다.

다만 이렇게 되면, 파라미터의 이름은 그대로 유지 되지 않는다.

ex)
(arg1:number,arg2:string)=>void를 변경시
(args_0:string,args_1:number)=>void

그럼에도 eqaul의 부조리함에 의해 답이 통과가 된다

다른 사람의 풀이

대부분 비슷했으나, 내 풀이와 다르게 reverse를 구현체 안에 넣는 경우도 있었다.

0개의 댓글