Sobes.tech
Back to questions
Junior — Middle
80

Можно ли использовать декораторы только для методов классов или также для других элементов?

Companies where asked
Бизнес-Азимут

Answer from AI

sobes.tech AI

Декораторы в JavaScript (и Node.js) можно применять не только к методам классов, но и к другим элементам, в зависимости от поддержки и используемого синтаксиса. В стандарте ECMAScript декораторы изначально предназначены для классов и их методов, но в некоторых реализациях и с помощью транспайлеров (например, Babel) можно применять декораторы к свойствам классов, параметрам методов и даже к самим классам.

Пример использования декоратора для метода класса:

function log(target, key, descriptor) {
  const original = descriptor.value;
  descriptor.value = function(...args) {
    console.log(`Вызов ${key} с аргументами:`, args);
    return original.apply(this, args);
  };
  return descriptor;
}

class Example {
  @log
  say(message) {
    console.log(message);
  }
}

const e = new Example();
e.say('Привет');

Таким образом, декораторы применимы не только к методам, но и к другим элементам классов, если среда выполнения или сборщик это поддерживает.