如何在TypeScript中使用self定义静态属性

时间:2013-11-27 15:40:40

标签: typescript

我想使用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类)? 有可能吗?

1 个答案:

答案 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();