我正在使用角度/打字稿。
如何在装饰器中获取构造函数参数?
以下是装饰器函数:
function ClassDecorator<T extends { new(...args: any[]): {} }>(constructor: T) {
console.log("-- decorator function invoked --");
return class extends constructor {
}
}
并将其用作:
@ClassDecorator()
export class SomeClass {
constructor(arg1) {} // ----> I want to access this arg1 inside the ClassDecorator
}
所以我的问题是有没有访问的构造函数(这里的方式arg1
)内部的争论@ClassDecorator
?
我尝试了一些类似于以下的解决方案:
export function ClassDec(ctor: Function) {
ctor.prototype;
console.log(' ctor.prototype :', ctor.prototype.arguments);
}
export function ClassDec(target: Function) {
console.log(target.arguments);
return (constructor: Function) => {
console.log(constructor, target.arguments);
};
}
// when I try to access the arguments of constructor function I'm getting an error saying cannot access arguments in strict mode.
但什么都没有解决!
这个想法很简单,我想constructor(arg1)
在装饰器函数中接收参数,如下所示:
function ClassDecorator<T extends { new(...args: any[]): {} }>(constructor: T) {
console.log("-- decorator function invoked --");
console.log(constructor.prototype.arguments)
return class extends constructor {
}
}
我知道这很难。我尝试了所有在线解决方案。请让我知道这是否可能。否则我可以放弃这个计划。
这对我有用(如代理):
function ClassDecorator<T extends { new(...args: any[]): {} }>(constructor: T) {
return class extends constructor {
constructor(...args: any[]) {
super(args);
console.log(`Ctor arguments: ${args}`);
}
}
}
@ClassDecorator
class SomeClass {
constructor(arg1) {
}
}
const a = new SomeClass("test");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句