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('Привет');
Таким образом, декораторы применимы не только к методам, но и к другим элементам классов, если среда выполнения или сборщик это поддерживает.