gpt4 book ai didi

typescript 装饰器和箭头功能

转载 作者:搜寻专家 更新时间:2023-10-30 21:31:14 25 4
gpt4 key购买 nike

我正在尝试按如下方式实现 Typescript 方法装饰器。

function dataMethod(name: string, options: any) {        
return (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => {

}
}

它的用法如下。

class HelloWidgetExtesion {         
@dataMethod("getData", {})
public getData(name: any, cb: any) {
cb(null, "");
}
}

但我正在尝试弄清楚如何使用带有箭头函数实现的装饰器,如下所示。

class HelloWidgetExtesion {         
@dataMethod("getData", {})
public getData = (name: any, cb: any) => {
cb(null, "Greetings from Loopback!");
}
}

但是上面的实现在编译的时候出现如下错误。

error TS2322: Type '(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => void' is not assignable to type '(target: Object, propertyKey: string | symbol) => void'.

Demo of the issues.

最佳答案

在最后一种情况下,字段 getData 被编译器视为属性(不是纯方法)。这意味着 descriptor 参数不会在编译的 javascript 文件中传递。

您所需要的只是修 retrofit 饰器并使 descriptor 字段可选。考虑这个例子:

function dataMethod(name: string, options: any) {        
return (target: any, propertyKey: string, descriptor?: TypedPropertyDescriptor<any>) => {

}
}

我修改了你的例子here

祝你好运

相关资源(感谢@David Sherret)

  1. Decorators signature

关于 typescript 装饰器和箭头功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32605074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com