02 装饰器

装饰器(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;
  }
}

最佳实践 #

  • 仅在必要时使用装饰器,避免过度复杂化。
  • 结合反射元数据增强功能。
  • 测试装饰器的运行时行为。