从.tsx文件访问窗口对象



通常在我的 .ts文件中,我可以通过调用诸如:

之类的东西访问窗口对象。
(<any>window).myObject

我在.tsx文件中遇到了汇编错误。有什么办法可以从.tsx文件访问?

谢谢。

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

(window as any).myObject

以上将有效,但是,如果您想要强大的键入考虑增加Window接口以添加您的属性,以便您获得编译时类型检查:

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

TS团队将语法<type>弃用。这是因为它与新的jsx语法之间存在太多的歧义。相反,TS团队介绍了类型断言的as操作员。

所以这个语法:

(window as any).things

是日期更新。

进行了这种更改,因为基本上,很难告诉编译器,何时与类型或JSX元素相关的语法。同样,符号变得更难阅读(例如,请参见下文):

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

可以在此处找到更多细节/typeScript/essess/296

@saravana答案的进一步说明,

最佳方法是将其定义在您的types文件夹中,并在.d.ts扩展中添加一个定义文件,即:window.d.ts,并将窗口对象的扩展定义放置为TypeScript Global Exmentation,通常提供合并的接口。

>
declare global {
    interface Window {
        myObject: YourObjectType;
    }
}
// but make sure to export that as default so Typescript will consider it automatically on the project
export default global;

相关内容

  • 没有找到相关文章

最新更新