我有以下基类:
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
}
}