/// 类装饰器示例 import 'reflect-metadata'; // 声明装饰器的成员 interface Decorator { title: string; age: number; } // 定义类装饰器 function decorator any>(target: T) { class NextTarget extends target { // 装饰构造函数 constructor(...args) { super(...args); this.title = 'aaa'; this.age = 11; console.info('Decorator.init'); } // 重写方法 getTitle() { console.info('Decorator.getTitle'); return `#${super.getTitle()}`; } } interface NextTarget extends Decorator { name: string; } return NextTarget; } @decorator // 应用类装饰器 class Person { constructor() { console.info('Person.init'); } getTitle() { console.info('Persion.getTitle'); return this.title; } } // 添加类装饰器中的成员签名 interface Person extends Decorator { name: string; } const persion = new Person(); console.info(persion.title, persion.getTitle()); export default Person;