从基类访问子类的静态成员



我有以下基类:

class BaseClass {
    public static myFlag: boolean = false;
    constructor() {
        //reference ChildClass.myFlag??
    }
}

对于儿童类:

class ChildClass extends BaseClass {
    constructor() { super(); }
}

和以下代码:

ChildClass.myFlag = true;
var child = new ChildClass();

如何在不将子类传递给基类的构造函数的情况下引用子类的 myFlag 属性的值?

构造函数的上下文是子对象。若要访问子类的静态属性,请使用 Object.prototype.constructor:

class BaseClass {
    public static myFlag: boolean = false;
    constructor() {
        console.log(this["constructor"].myFlag); // true
    }
}

更新

在较新版本的 TypeScript 中,您可能需要执行此操作才能编译:

class BaseClass {
    public static myFlag: boolean = false;
    constructor() {
        const ctor = this.constructor as typeof BaseClass;
        console.log(ctor.myFlag); // true
    }
}

最新更新