如何使用打字稿获取构造函数中的类?

时间:2019-01-31 08:45:20

标签: javascript typescript reflection prototype instantiation

我尝试在实例化时间将类的每个属性设置为空字符串。但是要获取所有属性,我需要获取在构造函数中实例化的“类”。任何帮助将不胜感激!

我使用打字稿3.1

  • 有什么想法可以在构造函数中获取Class吗?
  • 或者仅通过使用“ this”而不是Class,如何才能获得所有属性的列表,包括无实例化的属性?

这是我用来获取类的所有属性的函数。

      Export class Base {
        id: String;
        ...

         constructor() {
           getAllProperties(MyClass) 
             // I would like to have MyClass to be dynamique
         }

      }

       function getAllProps(cls: new (...args: any[]) => any): any[] {   
         // return a list of all Class properties.
       }

我也尝试使用Reflect.metadata API,但如果没有该类,将无法获得良好的结果。

1 个答案:

答案 0 :(得分:0)

父构造函数在子构造函数之前被调用,因此它将不起作用。您可以创建函数并在super()函数之后调用它

// Parent
class A1 {
    constructor() {
    }

    protected init() {
        //Get properties here
        console.log(this);
    }
}

// Child
class A2 extends A1 {
    public a;
    public b;

    constructor() {
        super();

        this.a = 1;
        this.b = 2;
        //code here...

        this.init();
    }
}