通常在我的.ts
文件中,我可以通过调用以下内容来访问窗口对象:
(<any>window).myObject
我在我的.tsx
文件中收到了编译错误。有什么办法可以从.tsx
文件中访问它吗?
谢谢。
通常在我的.ts
文件中,我可以通过调用以下内容来访问窗口对象:
(<any>window).myObject
我在我的.tsx
文件中收到了编译错误。有什么办法可以从.tsx
文件中访问它吗?
谢谢。
您可以使用as
类型断言的语法。<type>obj
这是与 JSX 语法冲突的类型断言的替代语法:
(window as any).myObject
以上将起作用,但是如果您想要强类型,请考虑增加接口Window
以添加您的属性,以便您获得编译时类型检查:
declare global {
interface Window {
myObject: YourObjectType;
}
}
<type>
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-foo和此处https://github.com/Microsoft/TypeScript/问题/296