TypeScript 装饰器是 TypeScript 中一种强大的功能,它允许我们以声明式的方式扩展类的行为。装饰器可以应用于类、方法、访问符、属性或参数上。

装饰器的基本用法

装饰器由三部分组成:@装饰器名称,参数1,参数2。以下是一个简单的装饰器示例:

function MyDecorator(target: Function) {
  console.log('装饰器被应用了');
}
@MyDecorator
class MyClass {
  // 类体
}

类装饰器

类装饰器应用于类本身,可以用来监视、修改或替换类定义。以下是一个类装饰器的示例:

function MyDecorator(target: Function) {
  target.prototype.myMethod = function() {
    console.log('这是类装饰器添加的方法');
  }
}
@MyDecorator
class MyClass {
  // 类体
}

方法装饰器

方法装饰器应用于类的属性或方法,可以用来监视、修改或替换方法定义。以下是一个方法装饰器的示例:

function MyDecorator(target: Object, propertyKey: string, descriptor: PropertyDescriptor) {
  descriptor.value = function() {
    console.log('这是方法装饰器修改后的方法');
  }
}
class MyClass {
  @MyDecorator
  public myMethod() {
    console.log('这是原始的方法');
  }
}

属性装饰器

属性装饰器应用于类的属性,可以用来监视、修改或替换属性定义。以下是一个属性装饰器的示例:

function MyDecorator(target: Object, propertyKey: string) {
  console.log(`属性 ${propertyKey} 被装饰器装饰了`);
}
class MyClass {
  @MyDecorator
  public myProperty: string;
}

参数装饰器

参数装饰器应用于类的方法或属性的参数,可以用来监视、修改或替换参数。以下是一个参数装饰器的示例:

function MyDecorator(target: Object, propertyKey: string, parameterIndex: number) {
  console.log(`参数 ${parameterIndex} 被装饰器装饰了`);
}
class MyClass {
  public myMethod(@MyDecorator param: string) {
    // ...
  }
}

更多关于 TypeScript 装饰器的信息,可以参考官方文档

相关资源