Javascript 将方法传递给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

我正在尝试将一个方法传递给typescript装饰程序。当我作为内联箭头函数执行此操作时,我可以这样做。但我无法通过以下方式做到这一点:

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()
的任何内容。