在ts中我想保留一行Javascript代码原生,因为它使用的类型是tsc不知道的(没有node_module可用),但在运行时它存在于浏览器的全局窗口对象中。 有一个简单的解决方案吗? (通过注释即)。 我使用angular4。
答案 0 :(得分:2)
如this answer中所述,您可以为window
或全局变量引入服务,以便使用DI处理此问题:
export const WINDOW = new OpaqueToken();
...
providers: [..., { provide: WINDOW, useFactory: () => window }]
...
constructor(@Inject(WINDOW) window) {
window.foo();
}
在window
不可用的环境中WINDOW
提供商可以替换为其他实施,例如noop foo
。
答案 1 :(得分:1)
如果您不知道其类型,请使用any
类型。
const foo: any = window.globalVar
或
const foo = windows.globalVar as any