通常在我的 .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;