gpt4 book ai didi

typescript - 是否可以包装一个函数并保留其类型?

转载 作者:搜寻专家 更新时间:2023-10-30 20:33:23 25 4
gpt4 key购买 nike

我正在尝试创建一个通用包装函数,它将包装传递给它的任何函数。

最基本的包装函数看起来像

function wrap<T extends Function>(fn: T) {
return (...args) => {
return fn(...args)
};
}

我正在尝试像这样使用它:

function foo(a: string, b: number): [string, number] {
return [a, b];
}

const wrappedFoo = wrap(foo);

现在 wrappedFoo 正在获取一种 (...args: any[]) => any

是否有可能让 wrappedFoo 模仿其包装的函数类型?

最佳答案

这适用于任意数量的参数,并保留所有参数和返回类型

const wrap = <T extends Array<any>, U>(fn: (...args: T) => U) => {
return (...args: T): U => fn(...args)
}

关于typescript - 是否可以包装一个函数并保留其类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38598280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com