Typescript静态方法怎么使用装饰器获取所在类名
时间: 2024-11-20 19:38:24 浏览: 23
在 TypeScript 中,你可以使用装饰器 (Decorators) 来附加元信息或功能到类、函数,包括静态方法上。为了获取静态方法所在的类名,可以创建一个装饰器,它会在方法被声明时执行,并保存相关信息。
下面是一个简单的例子:
```typescript
// 定义一个装饰器来获取类名
function staticClassName(target: any, key: string, descriptor: PropertyDescriptor): void {
const originalMethod = descriptor.value; // 获取原始方法
// 在方法执行前添加获取类名的功能
descriptor.value = function(...args: any[]) {
const className = target.constructor.name; // 获取当前类的名称
console.log(`Calling static method ${key} from class ${className}`);
return originalMethod.apply(this, args); // 调用原方法并传递上下文
};
// 将修改后的描述符设置回目标对象
Reflect.defineProperty(target, key, descriptor);
}
@staticClassName
class MyClass {
static myStaticMethod() {
console.log('This is a static method');
}
}
```
当你调用 `MyClass.myStaticMethod()` 时,会先打印出该静态方法所在的类名,然后执行方法。
阅读全文