从具有相同名称的类型的命名空间实例化全局类型

时间:2017-07-02 17:35:31

标签: typescript

我在全球范围内宣布了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 个答案:

答案 0 :(得分:1)

强行打字黑客。在JavaScript中,您可以通过全局变量访问全局级别的变量,该变量位于Web浏览器window和node.js global中。对于Web浏览器,它很容易。您可以选择您喜欢的语法。

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

return new (window as any).A()

当你的应用程序在node.js或其他具有另一个全局变量的非浏览器平台上运行时,会有点复杂。我不知道哪个更漂亮的解决方案会破解获取全局变量(因为global是TypeScript中的关键字)。

return new (eval("global")).A()