我有以下基类:
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
属性的值?
答案 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
}
}