MST

星途 面试题库

面试题:TypeScript参数装饰器中如何获取被装饰方法的参数

在TypeScript的参数装饰器场景下,编写代码展示如何在参数装饰器函数中获取被装饰方法传递进来的参数值,并简要说明其应用场景。
14.7万 热度难度
前端开发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;
    };
}

class ExampleClass {
    someMethod(@logParameter param: string) {
        console.log(`方法接收到参数: ${param}`);
    }
}

const example = new ExampleClass();
example.someMethod('test');

应用场景

  1. 日志记录:可以在参数装饰器中记录方法传入的参数值,方便调试和审计。比如在上述代码中,通过参数装饰器打印出了方法传入参数的值,在开发和维护过程中可以快速定位问题。
  2. 参数验证:在方法执行前,获取参数值进行验证。例如检查参数是否符合特定格式、范围等,如果不符合可以抛出异常或采取其他处理方式,确保方法执行的正确性和稳定性。
  3. 权限控制:根据传入的参数值,判断当前调用是否具有足够权限。比如某些方法需要特定参数值才允许特定角色调用,通过参数装饰器获取参数并进行权限检查。