面试题答案
一键面试方法装饰器定义语法
在TypeScript中,方法装饰器的定义语法如下:
function methodDecorator(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void {
// 装饰器逻辑
return descriptor;
}
target
:对于静态成员来说是类的构造函数,对于实例成员是类的原型对象。propertyKey
:方法的名称。descriptor
:方法的属性描述符。
简单示例
function logBefore(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
descriptor.value = function(...args: any[]) {
console.log(`即将调用方法 ${propertyKey.toString()}`);
return originalMethod.apply(this, args);
};
return descriptor;
}
class MyClass {
@logBefore
myMethod() {
console.log('方法执行中');
}
}
const myObj = new MyClass();
myObj.myMethod();
上述代码中,logBefore
是一个方法装饰器,在每次调用被装饰的方法前,会打印一条日志信息。