我看到,装饰器通常可以用于类和类内的方法。是否有一种方法可以像下面的代码一样将装饰器用于常规函数:
@myDecorator()
function someFunction() {
// do something
}
someFunction(); // running the function with the decorator.
我看到,装饰器通常可以用于类和类内的方法。是否有一种方法可以像下面的代码一样将装饰器用于常规函数:
@myDecorator()
function someFunction() {
// do something
}
someFunction(); // running the function with the decorator.
根据当前的提案,函数不支持装饰器。
您可以使用简单的函数调用来实现类似的结果:
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();
function target() { /*...*/ } target = myDecorator(target);
,它会变得更简洁一些(我会像上面的Titian那样做,不仅因为提升所需的时间差异,而且还指出了选项)。但是,当它到达这里时,显式语法确实会有所帮助。 - T.J. Crowder