装饰器是一种实验性的特性,最初是由 TypeScript 引入的,然后被 ECMAScript 提案采纳,并成为 ECMAScript 2017 的一部分。装饰器主要用于修改类的行为,可以在类声明、方法、访问器、属性或参数声明之前使用。

以下是 TypeScript 装饰器的基本用法和一些示例:

1. 类装饰器

类装饰器在类声明之前声明,用于修改类的行为。
function classDecorator(constructor: Function) {
  console.log("Class Decorator");
}

@classDecorator
class ExampleClass {
  // 类的定义
}

2. 方法装饰器

方法装饰器在方法声明之前声明,用于修改方法的行为。
function methodDecorator(target: any, key: string, descriptor: PropertyDescriptor) {
  console.log("Method Decorator");
}

class ExampleClass {
  @methodDecorator
  exampleMethod() {
    // 方法的定义
  }
}

3. 属性装饰器

属性装饰器在属性声明之前声明,用于修改属性的行为。
function propertyDecorator(target: any, key: string) {
  console.log("Property Decorator");
}

class ExampleClass {
  @propertyDecorator
  exampleProperty: string;
}

4. 参数装饰器

参数装饰器在参数声明之前声明,用于修改参数的行为。
function parameterDecorator(target: any, key: string, index: number) {
  console.log("Parameter Decorator");
}

class ExampleClass {
  exampleMethod(@parameterDecorator param1: string, @parameterDecorator param2: number) {
    // 方法的定义
  }
}

请注意,使用装饰器时需要在 tsconfig.json 中启用 experimentalDecorators 选项。

装饰器的使用需要谨慎,因为它们是一种强大但也复杂的工具。在实际项目中,可以使用装饰器来实现元编程,例如实现依赖注入、路由映射等功能。


转载请注明出处:http://www.zyzy.cn/article/detail/4711/TypeScript