包装功能并保留输入和返回类型



是否可以包装这样的函数并保留类型?

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;

最新更新