是否可以包装像这样的函数并保留类型?
const example = (alpha: string): string => alpha + 'beta';
const wrappedFn = (fn: Function) => fn;
如何从fn
中提取类型并返回与传递的函数相同的输入并返回?
答案 0 :(得分:4)
您可以使用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")
答案 1 :(得分:0)
您可以使用泛型使fn
返回一个函数,该函数返回与输入函数相同的类型:
const wrappedFn = <T>(fn: (T) => T) => fn;