MST

星途 面试题库

面试题:TypeScript方法装饰器中如何实现简单的日志记录

请用TypeScript编写一个方法装饰器,用于在方法执行前后记录日志,日志内容包括方法名和执行时间。例如,在方法执行前记录 '开始执行[方法名]',执行后记录 '结束执行[方法名],耗时[xx]毫秒'。
27.2万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function logMethod(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
    const originalMethod = descriptor.value;
    descriptor.value = function(...args: any[]) {
        const methodName = propertyKey;
        console.log(`开始执行${methodName}`);
        const startTime = Date.now();
        const result = originalMethod.apply(this, args);
        const endTime = Date.now();
        const duration = endTime - startTime;
        console.log(`结束执行${methodName},耗时${duration}毫秒`);
        return result;
    };
    return descriptor;
}

你可以这样使用这个装饰器:

class MyClass {
    @logMethod
    myMethod() {
        // 模拟一些操作
        for (let i = 0; i < 1000000; i++);
    }
}

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