Как я могу установить `декоратор` для функции стрелки в `typescript`?

#typescript

#typescript

Вопрос:

Я создаю декоратор в 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 resu<
  };

  return descriptor;
};
  

Он отлично работает для a function method , но не работает для arrow function .

Ниже приведен пример моей функции стрелки:

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

Не удается скомпилировать, потому что третий параметр descriptor: PropertyDescriptor не является необязательным. Я понимаю, что функция стрелки рассматривается как свойство, а не метод, поэтому я могу заставить ее компилироваться, объявив третий параметр как необязательный : descriptor?: PropertyDescriptor . Но я не знаю, как вызвать функцию стрелки внутри моего декоратора.

Комментарии:

1. можете ли вы добавить краткий пример того, как вы попытались бы использовать его для функции со стрелкой? И не отвечаю прямо на ваш вопрос, но, с моей точки зрения, вы также могли бы использовать const alg = measure(() => { /* alg */ }) функции стрелки вместо декоратора

2. Я написал пример того, как вы могли бы решить эту проблему только с помощью функций со стрелками

3. Спасибо за ваш код. Я ищу способ использования decorator . Я добавил свой вариант использования в вопросе.