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 装饰器的信息,可以参考官方文档。