2013-11-27 150 views
0

我想使用self定義靜態屬性。如何在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在B的構造函數中未定義。

如何定義具有靜態屬性的類A,該靜態屬性的定義使用自我(如類B)? 這可能嗎?

回答

0

在完全初始化之前,您不能從其初始化程序外部使用A
因此,您不能在A的靜態初始值設定項內創建new B()

相反,設置類以外的屬性:

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(); 
相關問題