TS:装饰器
一、定义
- 是一种特殊类型的声明,它能够被附加到类、方法、访问符、属性或参数上。
二、几种模式(以类装饰器为例)
1.普通模式
/**
@target : 当前对象原型
**/
function logClass(target : any) {
target.prototype.myAttr = '动态扩展的属性';
target.prototype.myFunc = () => {
console.log('动态扩展的方法');
}
}
@logClass
class Foo{
constructor(){
}
}
let foo : Foo = new Foo();
console.log(foo.myAttr); // 动态扩展的属性
foo.myFunc(); // 动态扩展的方法
2.工厂模式
/**
@params : 修改的属性的值
@target : 当前对象原型
**/
function logClass(params : string) {
return function(target : any){
target.prototype.myAttr = params;
}
}
@logClass('hello')
class Foo{
myAttr : any;
constructor(){
}
}