在angular4中访问本机js全局对象或从编译中排除单个typescript行?

时间:2017-10-07 08:44:03

标签: angular typescript angular2-nativescript

在ts中我想保留一行Javascript代码原生,因为它使用的类型是tsc不知道的(没有node_module可用),但在运行时它存在于浏览器的全局窗口对象中。 有一个简单的解决方案吗? (通过注释即)。 我使用angular4。

2 个答案:

答案 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