Javascript 将方法传递给typescript装饰器
我正在尝试将一个方法传递给typescript装饰程序。当我作为内联箭头函数执行此操作时,我可以这样做。但我无法通过以下方式做到这一点:Javascript 将方法传递给typescript装饰器,javascript,typescript,ecmascript-6,Javascript,Typescript,Ecmascript 6,我正在尝试将一个方法传递给typescript装饰程序。当我作为内联箭头函数执行此操作时,我可以这样做。但我无法通过以下方式做到这一点: function preProcessor(preFn:any) { return function ( target: any, propertyKey: string, descriptor: PropertyDescriptor ) { descri
function preProcessor(preFn:any) {
return function (
target: any,
propertyKey: string,
descriptor: PropertyDescriptor
) {
descriptor.value = function (param:any) {
return preFn(param);
}
};
}
class C {
@preProcessor(this.capitalize)
methodA(str: any) {
console.log(str) }
capitalize = (x:any)=>{return x.toUpperCase()}
}
var c = new C()
console.log(c.methodA("samurai..."))
这是有效的:
@preProcessor((x:any)=>{return x.toUpperCase()})
这是不可能的。当decorator运行时,还没有
这个。最好是传递方法的名称,即@preProcessor('capitalize')
以字符串形式发送名称的工作原理是什么@Bergit然后您可以在装饰好的方法内部调用这个[methodName]()
,该方法似乎正在工作。不过有一个noob问题-我相信这是可能的,因为这个
将引用调用方的上下文。哪个是C级
对吗?因此,它将起作用,因为大写在类C中。这是否正确?否,或者您正在调用.methodA()
的任何内容。这是不可能的。当decorator运行时,还没有这个。最好是传递方法的名称,即@preProcessor('capitalize')
以字符串形式发送名称的工作原理是什么@Bergit然后您可以在装饰好的方法内部调用这个[methodName]()
,该方法似乎正在工作。不过有一个noob问题-我相信这是可能的,因为这个
将引用调用方的上下文。哪个是C级
对吗?因此,它将起作用,因为大写字母在类C中。这正确吗?否,或者您正在调用.methodA()
的任何内容。