Доступ к параметрам метода через декораторы - PullRequest
0 голосов
/ 23 июня 2018

Iv'e начал читать о создании декораторов и о том, как их использовать.Мне было интересно, есть ли для меня способ доступа к обернутым аргументам метода внутри функции декоратора.

Например, я хотел бы создать декоратор для журнала, имени метода и предоставленных аргументов.До сих пор мне удалось получить доступ только к имени метода.

  export function logger(target, propertyKey) {
    console.log(propertyKey); //Method name
  }

  @logger
  private fetchData(param) {
   ////
  }

Есть ли способ для меня получить доступ к параметру метода fetchData внутри декоратора?

Спасибо зааванс.

РЕДАКТИРОВАТЬ:

Решено, Ссылка на рабочий пример

1 Ответ

0 голосов
/ 23 июня 2018

target - это прототип класса.Чтобы параметры метода были доступны во время вызова, метод должен быть заменен оболочкой:

  export function logger(target, propertyKey, descriptor) {
    const originalFn = target[propertyKey];
    descriptor.value = function(param) {
      console.log(param);
      return originalFn.call(this, param);
    };
  }

  ...
  @logger
  private fetchData(param) {}
  ...
...