Декораторы для функций
Как я вижу, декораторы обычно могут использоваться с классами и методами внутри классов. Есть ли способ использовать декораторы с обычными функциями, как в коде ниже:
@myDecorator()
function someFunction() {
// do something
}
someFunction(); // running the function with the decorator.
2 ответа
Не с текущим предложением. Декорирование автономных функций, инициализаторов объектов и их содержимого или других вещей вполне может быть последующим предложением, но текущее предложение позволяет только украшать классы и их содержимое.
Декораторы не поддерживаются в функциях согласно текущему предложению
Вы можете получить похожий результат, используя простой вызов функции:
function myDecorator<Args extends any[], R>(fn: (...a: Args)=> R): (...a:Args) =>R {
return function (...a: Args) {
console.log("Calling");
return fn(...a);
}
}
const someFunction = myDecorator(function () {
console.log("Call");
});
someFunction();