typescript - 从具有相同名称类型的命名空间实例化全局类型
我在全局声明了一个 class A:
class A { }
我有 namespace N,它与其他类型一起也有 class A:
namespace N {
class A { }
// other declarations
}
我如何在 namespace N 内实例化全局 class A?
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 或其他具有另一个全局变量的非浏览器平台上运行时,会复杂一点。我不知道还有更好的解决方案可以通过黑客方式获取全局变量(因为 global 是 TypeScript 中的关键字)。
return new (eval("global")).A()
