Декораторы для функций

Как я вижу, декораторы обычно могут использоваться с классами и методами внутри классов. Есть ли способ использовать декораторы с обычными функциями, как в коде ниже:

@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(); 
Другие вопросы по тегам