装饰器(Decorators) #
装饰器是一种特殊的声明,可以附加到类、方法、属性或参数上,提供元编程能力。
基本概念 #
装饰器是实验性特性,需要在 tsconfig.json 中启用 experimentalDecorators。它是一个函数,在运行时执行。
使用场景 #
- 在框架如 Angular 中装饰组件、注入依赖。
- 实现日志记录、权限检查等横切关注点。
- 修改类或方法行为,而不改变其代码。
示例代码 #
function sealed(constructor: Function) {
Object.seal(constructor);
Object.seal(constructor.prototype);
}
@sealed
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
最佳实践 #
- 仅在必要时使用装饰器,避免过度复杂化。
- 结合反射元数据增强功能。
- 测试装饰器的运行时行为。