当前位置:网站首页>小满nestjs(第三章 前置知识装饰器)
小满nestjs(第三章 前置知识装饰器)
2022-08-09 18:40:00 【小满zs】
1、什么是装饰器
装饰器是一种特殊的类型声明,他可以附加在类,方法,属性,参数上面
装饰器写法 tips(需要开启一项配置)

类装饰器 主要是通过@符号添加装饰器
他会自动把class的构造函数传入到装饰器的第一个参数 target
然后通过prototype可以自定义添加属性和方法
function decotators (target:any) {
target.prototype.name = '小满'
}
@decotators
class Xiaoman {
constructor () {
}
}
const xiaoman:any = new Xiaoman()
console.log(xiaoman.name)属性装饰器
同样使用@符号给属性添加装饰器
他会返回两个参数
1.原形对象
2.属性的名称
const currency: PropertyDecorator = (target: any, key: string | symbol) => {
console.log(target, key)
}
class Xiaoman {
@currency
public name: string
constructor() {
this.name = ''
}
getName() {
return this.name
}
}

参数装饰器
同样使用@符号给属性添加装饰器
他会返回两个参数
1.原形对象
2.方法的名称
3.参数的位置从0开始
const currency: ParameterDecorator = (target: any, key: string | symbol,index:number) => {
console.log(target, key,index)
}
class Xiaoman {
public name: string
constructor() {
this.name = ''
}
getName(name:string,@currency age:number) {
return this.name
}
}
方法装饰器
同样使用@符号给属性添加装饰器
他会返回两个参数
1.原形对象
2.方法的名称
3.属性描述符 可写对应writable,可枚举对应enumerable,可配置对应configurable

const currency: MethodDecorator = (target: any, key: string | symbol,descriptor:any) => {
console.log(target, key,descriptor)
}
class Xiaoman {
public name: string
constructor() {
this.name = ''
}
@currency
getName(name:string,age:number) {
return this.name
}
}
边栏推荐
- [免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)
- Paper sharing: "FED BN" uses the LOCAL BATCH NORMALIZATION method to solve the Non-iid problem
- IS31FL3737B 通用12×12 LED驱动器 I2C 42mA 40QFN
- uniapp离线推送华为厂商申请流程
- 2022了你还不会『低代码』?数据科学也能玩转Low-Code啦!
- Win10系统80端口被占用的解决方法
- Environment: Flink version: 1.15.1 jar package: flink-sql-connector-oracle
- Queue topic: Implementing stacks with queues
- 启动 CM agent 报错——ImportError: libssl.so.10: cannot open shared object file: No such file or directory
- Codesys结构变量编程应用(STRUCT类型)
猜你喜欢
![[Free column] Xposed plug-in development for Android security [from scratch] tutorial](/img/7b/a036ac664c7e27ed7d87e7ee18c05d.png)
[Free column] Xposed plug-in development for Android security [from scratch] tutorial
![[免费专栏] Android安全之ZIP文件目录遍历漏洞](/img/11/c9116562b0ce57205e73fc442874d3.png)
[免费专栏] Android安全之ZIP文件目录遍历漏洞

ebook下载 | 《 企业高管IT战略指南——企业为何要落地DevOps》

放下手机吧:实验表明花20分钟思考和上网冲浪同样快乐

Samsung's flagship discount is 1,800, Apple's discount is over 1,000, and the domestic flagship is only reduced by 500 to send beggars

Iptables防火墙常见的典型应用场景

hdu 2094 产生冠军(STL map || 拓扑 || STL set)

智驾科技完成C1轮融资,此前2轮已融4.5亿元

C#/VB.NET: Extract text and pictures from PowerPoint document

C#/VB.NET:从PowerPoint文档中提取文本和图片
随机推荐
OpenHarmony如何查询设备类型
Swift -- 数组高阶函数
最新BEV感知基线 | 你确定需要激光雷达?(卡内基梅隆大学)
【Unity3D】2D动画
工大科雅深交所上市:市值45亿 齐承英家族是大股东
Queue topic: Implementing stacks with queues
[] free column Android dynamic debugging GDB APP of safety
时序攻击
hdu 1285 确定比赛名次(拓扑排序)
智驾科技完成C1轮融资,此前2轮已融4.5亿元
laravel 中配置文件.env解读
[Free column] APK dynamic reverse application of Android security [Three Smali injection methods]
[Free Column] Android Security for Peace Elite (FZ) APK Reverse Analysis
Paper sharing: "FED BN" uses the LOCAL BATCH NORMALIZATION method to solve the Non-iid problem
鲜花线上销售管理系统的设计与实现
2022深圳(软考高级)信息系统项目管理师认证报名
2022.08.05_每日一题
[免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)
Qt 5.12 LTS 部署
有文章说明或者证明MYSQL 嵌套子查询不足之处吗?