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를 구현체 안에 넣는 경우도 있었다.