我想使用self定义静态属性。
class B {
parent: B;
constructor() {
if (A.parent != null) {
this.parent = A.parent;
}
else {
this.parent = null;
}
}
}
class A {
public static parent: B = new B();
public static child: B = new B();
}
var hoge = new A();
在上面的例子中,我试图定义类A和B. 此代码翻译为以下内容。
var B = (function () {
function B() {
if (A.parent != null) {
this.parent = A.parent;
} else {
this.parent = null;
}
}
return B;
})();
var A = (function () {
function A() {
}
A.parent = new B();
A.child = new B();
return A;
})();
var hoge = new A();
此代码无法执行,因为A的构造函数中未定义A.
如何定义具有静态属性的A类,其定义使用A self(例如B类)? 有可能吗?
答案 0 :(得分:0)
在完全初始化之前,您无法在其自己的初始化程序之外使用A
因此,您无法在new B()
的静态初始值设定项中创建A
。
相反,请在类外设置属性:
class A {
public static parent: B;
public static child: B;
}
// A is now fully initialized and visible to the world.
A.parent = new B();
A.child = new B();