我通过显式设置属性来为我的对象设置全局命名空间window.
window.MyNamespace = window.MyNamespace || {};
Run Code Online (Sandbox Code Playgroud)
TypeScript强调MyNamespace并抱怨:
属性'MyNamespace'在'window'类型的值上不存在任何"
我可以通过声明MyNamespace为环境变量并删除window显式来使代码工作,但我不想这样做.
declare var MyNamespace: any;
MyNamespace = MyNamespace || {};
Run Code Online (Sandbox Code Playgroud)
我怎样才能window留在那里让TypeScript开心?
作为旁注,我发现TypeScript抱怨特别有趣,因为它告诉我这种window类型any绝对可以包含任何东西.
我已经将TS添加到我的React / Redux应用程序中。
我window在我的应用程序中使用对象是这样的:
componentDidMount() {
let FB = window.FB;
}
Run Code Online (Sandbox Code Playgroud)
TS引发错误:
TypeScript错误:类型“ Window”上不存在属性“ FB”。TS2339
我想修复该错误。
// Why doesn't this work? I have defined a type locally
type Window = {
FB: any
}
componentDidMount() {
let FB = window.FB;
}
// TypeScript error: Property 'FB' does not exist on type 'Window'. TS2339
Run Code Online (Sandbox Code Playgroud)
我在这里找到答案/sf/answers/3948169781/
declare const window: any;
componentDidMount() {
let FB = window.FB;
}
// No errors, works well
Run Code Online (Sandbox Code Playgroud)
为什么即使我完全没有指定FB属性,第一个版本也不起作用,而第二个版本却起作用?