Nest.js学习笔记(三)

简介: 本节记录TypeScript的若干装饰器,仅做示范,如需详细了解可自行移步官方文档
// 普通类装饰器(不可传参)
const doc: ClassDecorator = (target: any) => {
    console.log(target)
}

@doc
class Xiaoman {
    constructor() {}
}

// 类工厂装饰器(可自由传参)
const docs = (str: string): ClassDecorator => {
    return (target: any): void => {
        console.log(str)
    }
}

@docs('这是一段字符串')
class XiaomanFactory {
    constructor() {}
}

// 属性装饰器(返回构造函数和属性名)
const props: PropertyDecorator = (target: any, key: string | symbol) => {
    console.log(target, key)
}

class XiaomanProperty {
    @props
    public name: string
    constructor() {
        this.name = '小满'
    }
}

// 方法装饰器(返回构造函数、方法名和方法定义)
const method:MethodDecorator = (target: any, propertyKey: string | symbol,descriptor:any) => {
    console.log(target,propertyKey,descriptor);
}

class XiaomanMethod {
    constructor(){}
    @method
    getName(){}
}

// 参数装饰器(返回构造函数、参数名和参数所在位置(从前往后递减))
const param:ParameterDecorator = (target:any,propertyKey: string | symbol,parameterIndex: number) => {
    console.log(target,propertyKey,parameterIndex)
}

class XiaomanParams {
    constructor(){}
    myMethod(@param data:any,@param key:any){}
}

// 装饰器底层实现
class CustomXiaoman {
    constructor(){}
}
const custom = (target:any) => {
    console.log(target)
}
custom(CustomXiaoman)
相关文章
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的云的学习笔记系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的云的学习笔记系统附带文章源码部署视频讲解等
26 0
|
3月前
|
移动开发 JavaScript 前端开发
webgl学习笔记3_javascript的HTML DOM
webgl学习笔记3_javascript的HTML DOM
41 0
webgl学习笔记3_javascript的HTML DOM
|
3月前
|
JavaScript 前端开发 Java
webgl学习笔记2_javascript基础快速学习
webgl学习笔记2_javascript基础快速学习
32 0
|
3月前
|
前端开发 JavaScript API
JavaScript学习笔记(一)promise与async
JavaScript学习笔记(一)promise与async
|
3月前
|
存储 JavaScript
【ES6系列第二篇】适用JS初学者的Set对象和Map对象学习笔记
【ES6系列第二篇】适用JS初学者的Set对象和Map对象学习笔记
40 0
|
9月前
|
存储 JavaScript 前端开发
【js】函数概述学习笔记(8)
【js】函数概述学习笔记(8)
30 0
|
9月前
|
存储 JavaScript
【js】数组学习笔记(7-2)
【js】数组学习笔记(7-2)
50 0
|
9月前
|
JavaScript 索引
【js】数组学习笔记(7-1)
【js】数组学习笔记(7-1)
39 0
|
9月前
|
JavaScript 前端开发 Python
【js】学习笔记-流程控制结构(5)
【js】学习笔记-流程控制结构(5)
55 0
|
9月前
|
前端开发 JavaScript Python
javascript入门学习笔记打卡(2)
javascript入门学习笔记打卡(2)
32 0