从.tsx文件访问Window对象

时间:2017-12-28 13:58:22

标签: javascript typescript window-object

通常在我的.ts文件中,我可以通过调用以下内容来访问窗口对象:

(<any>window).myObject

我的.tsx文件中出现了编译错误。有什么办法可以从.tsx文件中访问它吗?

感谢。

2 个答案:

答案 0 :(得分:8)

您可以使用as语法进行类型断言。这是类型断言的替代语法,因为<type>obj与JSX语法冲突:

(window as any).myObject

以上内容可行,但如果您想要强类型,请考虑augmenting Window接口添加您的属性,以便进行编译时类型检查:

declare global {
    interface Window {
        myObject: YourObjectType;
    }
}

答案 1 :(得分:3)

ts团队不推荐使用语法<type>。这是因为它与新的jsx语法之间存在太多歧义。相反,ts团队为类型断言引入了as运算符。

所以这个语法:

(window as any).things

是迄今为止的更新。

这个改变已经完成了,因为基本上,告诉编译器什么时候这是一个与类型或jsx元素相关的语法非常困难。同样,符号变得更难阅读(例如见下文):

<Component>
  {<String>something}
</Component>

可在此处https://basarat.gitbooks.io/typescript/docs/types/type-assertion.html#as-foo-vs-foohttps://github.com/Microsoft/TypeScript/issues/296

找到更多详细信息