MST

星途 面试题库

面试题:TypeScript方法装饰器的基本使用

请简述TypeScript中方法装饰器的定义语法,并编写一个简单示例,实现一个方法装饰器来打印方法调用前的日志。
13.1万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

方法装饰器定义语法

在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 是一个方法装饰器,在每次调用被装饰的方法前,会打印一条日志信息。