gpt4 book ai didi

typescript 使用装饰器获取参数的值

转载 作者:行者123 更新时间:2023-12-03 23:30:21 24 4
gpt4 key购买 nike

如何访问装饰器中方法参数的值?

export const NullParameterCheck = (target: Object, key: string, index: number) => {
// how to get the value of the marked parameter in this case 'model'
// ... do something with that value here.
}

这就是我使用它的方式
public SetToolbar(@NullParameterCheck model: ToolbarModel): void {
}

我能找到的只是如何声明一个参数装饰器并记录它的每个参数
谢谢。

最佳答案

在声明类时调用装饰器,而不是在调用方法时调用。您可以替换原始方法来拦截和更改原始参数,但是不能从参数装饰器中替换方法,只能从方法装饰器中进行替换,因此您需要将装饰器添加到函数中:

const NullParameterCheck = (index: number) => (target: any, key: string, propDesc: PropertyDescriptor) => {
let originalFunction: Function = propDesc.value;
propDesc.value = function () {
let argValue = arguments[index];
let newArgs = [];
for (let i = 0; i < arguments.length; i++)newArgs.push(arguments[i]);
newArgs[index] = argValue || {};

return originalFunction.apply(this, newArgs);
};
return propDesc;
}

class ToolbarModel { }

class x {
@NullParameterCheck(0)
public SetToolbar( model: ToolbarModel): void {
console.log(model);
}
}

new x().SetToolbar(null);

关于 typescript 使用装饰器获取参数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49259357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com