3196 - Flip Arguments
实现 loadash
中 _.flip
类型版本
类型 FlipArguments<T>
需要函数类型 T
,并返回一个新的函数类型,该函数类型具有与 T
相同的返回类型,但参数顺序相反。
例如:
type Flipped = FlipArguments<
(arg0: string, arg1: number, arg2: boolean) => void
>
// (arg0: boolean, arg1: number, arg2: string) => void
Solution
type FlipArguments<T extends Function> = T extends (...args: infer P) => infer R
? (...args: Reverse<P>) => R
: never
利用 infer
提取出函数类型 T
的参数类型 P
和返回值类型 R
并参数数组类型 P
利用 3192 题进行翻转