大家好我很想知道是否可以获得所有给出装饰器javascript / typescript的类。
我有课,例如
@mydecorator
class SomeClass1{
}
和其他一些模块
@mydecorator
class SomeClass2{
}
然后在运行时的其他模块中我想得到所有具有装饰器@mydecorator的类或构造函数...我担心这是不可能的:(
export function getaAllClassesByDecorator(decorator:string){
... return constructor or something that i am able to call static method
}
答案 0 :(得分:3)
您需要“注册”所有在某处使用@mydecorator的类。该寄存器逻辑应该在@mydecorator中实现。例如:
for edu_level in edu_options:
for option in edu_options[edu_level]:
if cleaned_string in edu_options["Completed Graduate School"]:
user = "Completed Graduate School"
return user
elif cleaned_string in edu_options["Completed College"]:
user = "Completed College"
return user
elif option in cleaned_string:
user = edu_level
return user
现在,您可以在 registeredClasses 数组
中获取所有已注册的类答案 1 :(得分:0)
您不能“自动”执行此操作,但您可以使用所述类创建注册表 然后在装饰器函数中添加这些类:
const REGISTRY: { [name: string]: any } = {};
function mydecorator(constructor) {
REGISTRY[constructor.name] = constructor;
}
然后你可以查询这个REGISTRY
并知道谁使用了这个装饰器。