是否可以包装这样的函数并保留类型?
const example = (alpha: string): string => alpha + 'beta';
const wrappedFn = (fn: Function) => fn;
如何将类型从fn
中拉出并返回相同的输入并返回与通过功能中传递的?
您可以使用REST参数中的元组保留所有输入参数类型(即使有更多的args):
const example = (alpha: string): string => alpha + 'beta';
const wrappedFn = <A extends any[], R>(fn: (...args: A) => R) => (...args: A): R => {
console.log("executing");
return fn(...args);
};
wrappedFn(example)("a")
您可以使用仿制药使fn
返回一个返回与输入函数相同类型的函数:
const wrappedFn = <T>(fn: (T) => T) => fn;