TypeScript中类的装饰器
- 装饰器本身是一个函数
- 装饰器通过 @ 符号来使用
- 装饰器是对类进行修饰,而非每一个实例,只要类一定义,装饰器就会立即执行
- 类装饰器接收的参数是构造函数
function TestDecorator(constructor: any) {
constructor.prototype.getName = () => {
console.log('kaiwin');
};
console.log('decorator');
}
@TestDecorator
class Test {}
const test = new Test();
(test as any).getName();
注意:如果要正确执行上述代码,需进行如下配置
因为在ts中对类的修饰器还只是实验阶段,错误可能如下图所示
解决方式如下:
首先要 npm insatll typescript --save 安装
然后再 tsconfig.json中将实验阶段类修饰器注释去掉
另外值得注意的就是当定义多个装饰器时 ,执行的顺序是:先定义的后执行,也就是
从下到上,从右到左的执行顺序