首页 > 解决方案 > 将方法传递给打字稿装饰器

问题描述

我正在尝试将方法传递给打字稿装饰器。当我将其作为内联箭头函数执行时,我可以这样做。但我无法通过以下方式做到这一点:

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()})

标签: javascripttypescriptecmascript-6

解决方案


推荐阅读