Декораторы — это специальные функции, которые изменяют или расширяют поведение классов, методов или свойств на этапе определения — без прямого изменения их исходного кода. На данный момент это TC39 Stage 3 proposal, то есть они ещё не входят в официальный стандарт JavaScript, но широко поддерживаются инструментами типа Babel и TypeScript.
Декораторы используют синтаксис @decoratorName и размещаются прямо над элементом, который они модифицируют:
@decoratorName
class MyClass { ... }
function log(target, context) {
return function (...args) {
console.log(`Calling method: ${context.name}`);
return target.apply(this, args);
};
}
class MyClass {
@log
greet() {
return "Hello!";
}
}
const obj = new MyClass();
obj.greet();
// Output: "Calling method: greet"
log получает исходный метод как target и объект контекста, описывающий декорируемый элементtarget.apply(this, args)@log применяется декларативно на этапе определения классаДекораторы применяются декларативно во время определения класса или метода, используя синтаксис @decoratorName, что позволяет сделать намерение явным в коде.
Новый — ещё не проверен сообществом
Вы