Javascript 函数的装饰器
如我所见,装饰器通常可以与类内的类和方法一起使用。有没有一种方法可以将decorator与以下代码中的常规函数一起使用:Javascript 函数的装饰器,javascript,function,typescript,decorator,ecma,Javascript,Function,Typescript,Decorator,Ecma,如我所见,装饰器通常可以与类内的类和方法一起使用。有没有一种方法可以将decorator与以下代码中的常规函数一起使用: @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();
函数myDecorator(fn:(…a:Args)=>R):(…a:Args)=>R{
返回函数(…a:Args){
控制台日志(“调用”);
返回fn(…a);
}
}
const someFunction=myDecorator(函数(){
控制台日志(“调用”);
});
someFunction();
是的。我想了想。但是它看起来太冗长了:(@BogdanSurai是的,它有点冗长,但我认为它仍然可读:)@BogdanSurai-如果你按照function target(){/*…*/}target=myDecorator(target)的方式来做,你可以让它不那么冗长代码>(我会像提香那样做,不仅仅是因为吊装造成的时间间隔;只是指出了选项)。但是是的,显式语法将有助于实现这一点。