类装饰器
装饰器本身是一个函数,该函数有一个参数,参数本身是该类(构造函数)
使用装饰器
@装饰器
在TS中,如何约束一个变量为类
-
Function
-
new(参数)=>object
在TS中使用装饰器,要配置"experimentalDecorators": true,
装饰器函数的运行是在类定义之后就马上运行。
装饰器在编译后存在,本身是js存在的语法
类装饰器可以具有的返回值
- void:仅运行函数
- 返回一个新的类:会将新的类替换掉装饰目标
function test(target:new()=>object){
return class B extends target{
}
}
@test
class A{
}
const a = new A();
console.log(a); //B {}
- 解读
首先装饰器可以用到其它类,类装饰器可以增强类的功能。
上面例子,test装饰器返回一个B类,类A使用装饰器test,那么a对象就是B类创建出来的,这样就可以增强A类的功能。
但是存在一个问题,就是类型检查问题
function test(target:new()=>object)