【问题标题】:Accessing Window Object from .tsx file从 .tsx 文件访问窗口对象
【发布时间】:2018-06-09 01:57:31
【问题描述】:

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

(<any>window).myObject

我在我的.tsx 文件中遇到了编译错误。有什么方法可以从.tsx 文件中访问它吗?

谢谢。

【问题讨论】:

    标签: javascript typescript window-object


    【解决方案1】:

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

    (window as any).myObject
    

    上面的方法可以,但是如果你想要强类型,可以考虑augmentingWindow 接口来添加你的属性,这样你就可以在编译时进行类型检查:

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

    【讨论】:

      【解决方案2】:

      语法 &lt;type&gt; 已被 ts 团队弃用。这是因为它与新的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找到

      【讨论】:

        猜你喜欢
        • 2011-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-23
        相关资源
        最近更新 更多