2017-07-02 145 views
2

我有一個class A全局聲明:實例化從具有類型命名空間全局類型名稱相同

class A { } 

我有namespace N,其連同其他類型的有class A還有:

namespace N { 
    class A { } 
    // other declarations 
} 

我怎麼能實例化全球class A裏面的namespace N

namespace N { 
    export class B { 
     static getA(): A { // here 
      return new A(); // and here I want to refer global A, not N.A 
     } 
    } 
} 

回答

1

通過強制鍵入黑客。在JavaScript中,您可以通過網絡瀏覽器window中的全局變量和node.js global訪問全局級變量。對於網頁瀏覽器來說很簡單。你可以選擇你喜歡的語法。

return new (<any>window).A() 

更復雜
return new (window as any).A() 

點點,當您的應用程序中,有另一個全局變量的node.js或其他非瀏覽器平臺上運行它。我不知道更漂亮的解決方案,它會破解獲取全局變量(因爲全局是TypeScript中的關鍵字)。

return new (eval("global")).A() 
相關問題