【问题标题】:Access child class' static members from base class从基类访问子类的静态成员
【发布时间】:2013-12-31 03:40:43
【问题描述】:

我有以下基类:

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

【问题讨论】:

    标签: typescript


    【解决方案1】:

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

    【讨论】:

    • 为什么不直接写this["constructor"].myFlag
    猜你喜欢
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2011-02-03
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多