TypeScript装饰器 (事例统一为装饰器工厂 带参数)

类装饰器

// 普通装饰器   装饰器工厂(可带参)
// 定义 普通装饰器
function logClass(target:any){// 接受参数为当前类
    console.log(target)
}

@logClass
class PerSon{
    constructor(){
        
    }
}
//装饰器工厂
function logClass(params:any){// 接受参数为当前传参
     return function(target:any){// 接受参数为当前类
        console.log(params)  // 123
        console.log(target)
    }
}

@logClass("123")
class PerSon{
    constructor(){
        
    }
}

//可以进行扩展或者重载

属性装饰器

function logProperty(params:any){// 接受参数为当前传参
     return function(target:any,attr:any){//接受参数为当前类 和 接受参数为当前属性名称
        console.log(params)  // 123
        console.log(target)
        console.log(attr)
    }
} 

@logProperty("ddd")

方法装饰器

function logFun(params:any){// 接受参数为当前传参
     return function(target:any,methodName:any,desc:any){//接受参数为当前类 和 接受参数为当前方法名称  和  方法的描述
        console.log(params)  // 123
        console.log(methodName)
        console.log(desc)
    }
} 

//可以修改desc.value  当前方法

方法参数装饰器

function logParams(params:any){// 接受参数为当前传参
     return function(target:any,paramsName:any,paramsIndex:any){//接受参数为当前类  和  方法的名称  和参数的索引位置
        console.log(params)  // 123
        console.log(methodName)
        console.log(desc)
    }
} 

function getName(@logParams("张三") name:string){}

装饰器执行顺序

属性》方法》参数》类
多个装饰器  从后向前依次执行
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值