首页 > 解决方案 > 如何在`typescript`中的箭头函数上设置`decorator`?

问题描述

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;
};

它适用于 afunction method但不适用于arrow function.

下面是我的箭头函数的一个例子:

@measure
const underTest = () => {
...
}

它无法编译,因为第三个参数descriptor: PropertyDescriptor不是可选的。我知道箭头函数被认为是一种属性而不是一种方法,所以我可以通过将第三个参数声明为可选来使其编译:descriptor?: PropertyDescriptor。但我不知道如何在我的装饰器中调用箭头函数。

标签: typescript

解决方案


推荐阅读