MST

星途 面试题库

面试题:TypeScript参数装饰器基础应用

请用TypeScript编写一个简单的函数,并使用参数装饰器,在函数参数被调用时,控制台输出该参数的值。阐述参数装饰器在这个场景中的作用。
22.5万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 参数装饰器
function logParameter(target: Object, propertyKey: string | symbol, parameterIndex: number) {
    return function (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) {
        const originalMethod = descriptor.value;
        descriptor.value = function (...args: any[]) {
            console.log(`参数 ${parameterIndex} 的值为:`, args[parameterIndex]);
            return originalMethod.apply(this, args);
        };
        return descriptor;
    };
}

// 带有参数装饰器的函数
function greet(@logParameter name: string) {
    return `Hello, ${name}!`;
}

console.log(greet('Alice'));

参数装饰器在这个场景中的作用:

  • 日志记录:它可以方便地在函数参数被传入时记录参数的值,有助于调试。例如在上述代码中,我们能直观地看到 greet 函数传入的 name 参数值。
  • 参数验证:通过装饰器可以在函数执行前对参数进行验证。虽然代码中未体现,但可以在装饰器逻辑中添加验证逻辑,若参数不符合要求可以抛出异常等操作。
  • 增强函数功能:不改变函数本身业务逻辑的情况下,为函数添加额外功能,如记录参数操作,使得代码的可维护性和可扩展性更好。