type Curry any, P extends any[]> = ( ...args: DropParameters, P> ) => ReturnType type DropParameters = T extends [...U, ...infer R] ? R : never export function curry any, P extends any[]>(fn: T, ...args: P): Curry { return ((...rest: any[]) => fn(...args, ...rest)) as Curry } // 示例函数 // function fun1(a: string, b: number, c: string): number { // // 示例逻辑 // console.log(a, b, c); // return b; // } // // 测试 // const fun2 = curry(fun1, "A"); // fun2(1, "B"); // 相当于调用 fun1("A", 1, "B") // const fun3 = curry(fun1, "AA", 2); // fun3("S"); // 相当于调用 fun1("AA", 2, "S")