随着TypeScript和ES6里引入了类,在一些场景下我们需要额外的特性来支持标注或修改类及其成员。 装饰器(Decorators)为我们在类的声明及成员上通过元编程语法添加标注提供了一种方式。装饰器是一种特殊类型的声明,它能够被附加到类声明,方法, 访问符,属性或参数上。
代码:
function derator1() {
console.log(`derator1()`);
function wrapper(target, propertyKey: string, descriptor: PropertyDescriptor) {
console.log(`derator1()`);
}
return wrapper
}
function derator2(key:string) {
console.log(`derator2()`);
function wrapper(target, propertyKey: string, descriptor: PropertyDescriptor) {
console.log(`derator2()`);
}
return wrapper
}
class Demo {
@derator1()
@derator2("abc")
show(username:string,password:string) {
console.log("show()执行了");
}
}
var d = new Demo();
d.show("xioaming","123456");
因为装饰器是ES7中的内容,所以默认情况下, 所以tsc在编译过程中默认会不支持,所以,我们需要把编译代码的es版本转换成es5并开启代码编译时支持装饰器的功能。
官方文档说明:typescript.bootcss.com/decorators.…
终端运行如下:
tsc --target ES2020 --experimentalDecorators --emitDecoratorMetadata main.ts