typescript 装饰器
时间: 2023-08-30 08:08:00 浏览: 93
TypeScript装饰器是一种特殊的语法,用于修改类、方法、属性或参数的行为。装饰器通过在目标声明之前使用@符号来应用。装饰器可以用来添加新的功能、修改行为或元数据。
装饰器可以应用于类、方法、属性和参数。例如,可以使用装饰器来为类添加日志记录、验证或路由等功能。
下面是一个示例,演示如何使用装饰器来添加日志记录功能:
```typescriptfunction log(target: any, name: string, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
descriptor.value = function (...args: any[]) {
console.log(`Calling ${name} with arguments: ${JSON.stringify(args)}`);
const result = originalMethod.apply(this, args);
console.log(`Method ${name} returned: ${JSON.stringify(result)}`);
return result;
};
return descriptor;
}
class MyClass {
@log myMethod(arg: string) {
return `Hello, ${arg}!`;
}
}
const instance = new MyClass();
instance.myMethod("World");
```
在上面的示例中,我们定义了一个名为log的装饰器函数。该装饰器函数接收三个参数:目标对象、方法名和属性描述符。我们通过修改属性描述符的value来修改原始方法的行为,添加了日志记录的功能。
然后,我们将装饰器应用于MyClass类的myMethod方法。当调用myMethod方法时,会自动触发装饰器中定义的日志记录逻辑。
通过使用装饰器,我们可以轻松地修改类的行为,而无需在每个方法中手动添加相同的功能。这样可以提高代码的可重用性和可维护性。
阅读全文