javascript - 打字稿装饰器参数
问题描述
我想了解 Typescript 装饰器的不同参数是什么。
function myDecorator(target) {
// do something with 'target' ...
}
在上面的示例中,我知道 target 表示装饰器附加到的函数/类,但是装饰器的其他参数是什么,它们的含义是命令,我还想获得一个官方文档的链接来指定这个。
提前致谢。
解决方案
装饰器需要一个参数,它装饰的目标和更多参数,具体取决于目标的类型,例如
方法装饰器
方法装饰器的表达式将在运行时作为函数调用,并带有以下三个参数:
- 静态成员的类的构造函数,或者实例成员的类的原型。
- 成员的姓名。
- 成员的属性描述符。
您可以在TypeScript 装饰器上找到所有装饰器类型的完整列表:
类装饰器
- 仅目标类
方法装饰器
- 要么是静态成员的类的构造函数,要么是实例成员的类的原型,
- 会员姓名,
- 成员的属性描述符
访问器装饰器
- 静态成员的类的构造函数,或者实例成员的类的原型。
- 成员的姓名。
- 成员的属性描述符。
物业装饰师
- 静态成员的类的构造函数,或者实例成员的类的原型。
- 成员的姓名。
参数装饰器
- 静态成员的类的构造函数,或者实例成员的类的原型。
- 成员的姓名。
- 函数参数列表中参数的序号索引。
此外:
如果我们想自定义如何将装饰器应用于声明,我们可以编写一个装饰器工厂。装饰器工厂只是一个函数,它返回将由装饰器在运行时调用的表达式。
您可以根据需要创建带有参数的装饰器工厂。它们不受限制或指定。
TypeScript 文档中的示例。
装饰师:
function sealed(target) {
// do something with 'target' ...
}
适用于
@sealed x
装饰厂:
function color(value: string) {
// this is the decorator factory
return function (target) {
// this is the decorator
// do something with 'target' and 'value'...
};
}
应用为
@color('blue') x
推荐阅读
- python - 多种语言的名称实体识别 (NER)
- sql-server - 从存储过程返回拒绝表
- javascript - 如何解决 prestashop 代码 js 的问题
- javascript - 将数字添加到数组中以完成一组数字
- python - 名称插入的while循环
- javascript - 在反应 js(功能组件)中单击它时保持活动按钮
- java - Solr 返回多个(不正确的)值而不是一个正确的值
- spring - 当我在本地系统上运行项目时,它会抛出“java.lang.NoClassDefFoundError:无法初始化类 net.sf.cglib.proxy.Enhancer”
- swift - 单击列表项时,为 SwiftUI 中的每个列表项打开新的 SwiftUI
- javascript - 不呈现我在 Formik 中声明的 initialValues 以及为什么我在 formik 中的数组值在数组中