我声明了以下函数装饰器:
export function WithAlpha(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<Function>) {
const method = descriptor.value;
descriptor.value = function (...args) {
return method.apply(this, ['alpha']);
}
}
我尝试在这个类上测试它:
export class AlphaCl {
@WithAlpha
async someMethod(alpha: string) {
console.log(alpha);
}
}
但是我没有在 console.log 中获得 alpha,而是未定义。 如何使用装饰器更改函数参数?
答案 0 :(得分:0)
descriptor
的类型应该更新。另外,method
应该被选中
function WithAlpha(target: AlphaCl, propertyKey: string, descriptor: TypedPropertyDescriptor<(alpha: string) => Promise<void>>) {
const method = descriptor.value;
if (method) {
descriptor.value = function (...args: any[]) {
return method.apply(this, ['alpha']);
}
}
}
class AlphaCl {
@WithAlpha
async someMethod(alpha: string) {
console.log(alpha);
}
}