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

时间:2013-12-31 03:40:43

标签: typescript

我有以下基类:

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属性的值?

1 个答案:

答案 0 :(得分:5)

构造函数的上下文是子对象。要访问子类的静态属性,请使用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
    }
}