프로그래밍/TypeScript
Currying, 인자를 커링으로 변경하는 타입
카카수(kakasoo)
2023. 12. 3. 16:35
반응형
이 정도는 가뿐했다.
// your answers
type Shift<T extends any[]> = T extends [infer F, ...infer Rest] ? Rest : never;
declare function Currying<T extends Function>(fn: T):
T extends (...params: infer Params) => infer R
? Params['length'] extends 0 ? () => ReturnType<T>
: Params['length'] extends 1
? (p: Params[0]) => ReturnType<T>
: (p: Params[0]) => ReturnType<typeof Currying<(...nextFnParams: Shift<Params>) => R>>
: never;
반응형