装饰器工厂
1 | function color(value: string) { // 这是一个装饰器工厂 |
类装饰器
重载构造函数
1 | function classDecorator<T extends {new(...args:any[]):{}}>(constructor:T) { |
类中不同声明上的装饰器将按以下规定的顺序应用:
- 参数装饰器,然后依次是方法装饰器,访问符装饰器,或属性装饰器应用到每个实例成员。
- 参数装饰器,然后依次是方法装饰器,访问符装饰器,或属性装饰器应用到每个静态成员。
- 参数装饰器应用到构造函数。
- 类装饰器应用到类。
1 |
|
方法装饰器
- 对于静态成员来说是类的构造函数,对于实例成员是类的原型对象。
- 成员的名字。
- 成员的属性描述符。
1 | class Greeter { |
访问器装饰器
- 对于静态成员来说是类的构造函数,对于实例成员是类的原型对象。
- 成员的名字。
- 成员的属性描述符。
1 | class Point { |
属性装饰器
- 对于静态成员来说是类的构造函数,对于实例成员是类的原型对象。
- 成员的名字。
1 | class Greeter { |
参数装饰器
- 对于静态成员来说是类的构造函数,对于实例成员是类的原型对象。
- 成员的名字。
- 参数在函数参数列表中的索引。
1 | class Greeter { |