-
是一个函数
-
函数的参数是一个继承函数类型的泛型函数
-
返回可以是一个装饰器函数或者不返回(工厂模式返回函数后面介绍)
declare type ClassDecorator = (target: TFunction) => TFunction | void;
案例思路描述:
-
创建一个学生类
-
让学生类具拥有谈钢琴的技能
-
同时艺术家也想拥有弹钢琴的技能
我们用组合的思想,可以将弹钢琴的技能部分单独实现出来,谁想拥有引入即可。
装饰器相同的道理,只需要实现这个装饰器即可,下面用代码实现。
const musicDecorator : ClassDecorator = (target:Function)=>{
target.prototype.playPiano = () => {
console.log(‘弹钢琴’);
}
}
@musicDecorator
class Student {
}
@musicDecorator
class Artist{
}
var xiaoming = new Student();
(xiaoming).playPiano()
var jay = new Artist();
(jay).playPiano()
控制台输出:<