通过给定的@decorators获取所有类/构造函数

时间:2016-09-21 19:09:31

标签: javascript typescript

大家好我很想知道是否可以获得所有给出装饰器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 
}

2 个答案:

答案 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并知道谁使用了这个装饰器。