gpt4 book ai didi

javascript - setTimeout() 函数的 TypeScript 装饰器

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

我已经开始学习如何在我的应用程序中实现 TypeScript 装饰器。所以我从 setTimeout 开始。它是一个方法装饰器,在一段时间后执行方法。

例如:

@Decorators.timeout()
public someMethod () {}

这是我的实现:

export class Decorators {

public static timeout (target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<any>): any {

let originalMethod = descriptor.value;
let decArguments = arguments;

descriptor.value = function Timeout () {

setTimeout(() => {

originalMethod.apply(this, decArguments);

}, 2000);
};

return descriptor;

}

}

这是我遇到的错误:

Supplied parameters do not match any signature of call target

可能是什么问题?

最佳答案

您的 Timeout() 函数中缺少 args,您应该将这些 args 传递给原始方法:

descriptor.value = function Timeout (...args) {
setTimeout(() => {
originalMethod.apply(this, args);
}, 2000);
};

然后你应该删除这一行,因为它没有做任何事情:

let decArguments = arguments;

关于javascript - setTimeout() 函数的 TypeScript 装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47134432/

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