我已经开始学习如何在应用程序中实现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;
}
}
这是我得到的错误:
可能是什么问题呢?
最佳答案
您在args
函数中缺少Timeout()
,应将这些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/