MST

星途 面试题库

面试题:TypeScript中组合装饰器的基本实现

请编写一段TypeScript代码,实现两个简单的组合装饰器。一个装饰器用于在方法执行前打印日志 'before method',另一个装饰器用于在方法执行后打印日志 'after method'。并将这两个装饰器应用到一个类的某个方法上。
47.0万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 前置日志装饰器
function beforeMethod(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
    const originalMethod = descriptor.value;
    descriptor.value = function(...args: any[]) {
        console.log('before method');
        return originalMethod.apply(this, args);
    };
    return descriptor;
}

// 后置日志装饰器
function afterMethod(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
    const originalMethod = descriptor.value;
    descriptor.value = function(...args: any[]) {
        const result = originalMethod.apply(this, args);
        console.log('after method');
        return result;
    };
    return descriptor;
}

class MyClass {
    @beforeMethod
    @afterMethod
    myMethod() {
        console.log('method is running');
    }
}

const myClass = new MyClass();
myClass.myMethod();