我在typescript
中创建一个装饰器,如下代码:
const measure = (
target: Object,
propertyKey: string,
descriptor: PropertyDescriptor
) => {
const originalMethod = descriptor.value;
descriptor.value = function (...args) {
const start = performance.now();
const result = originalMethod.apply(this, args);
const finish = performance.now();
console.log(`Execution time: ${finish - start} milliseconds`);
return result;
};
return descriptor;
};
它对于function method
正常工作,但不适用于arrow function
。
以下是我的箭头功能的示例:
@measure
const underTest = () => {
...
}
由于第三个参数descriptor: PropertyDescriptor
不是可选的,因此无法编译。我知道箭头功能被认为是属性而不是方法,因此我可以通过将第三个参数声明为可选参数descriptor?: PropertyDescriptor
使其进行编译。但是我不知道如何在装饰器中调用arrow函数。