如何声明(“ typescript”:“ 3.x.x”)在窗口对象内部,我有一些具有某种类型的变量?
例如我有window.foo = { bar: 'baz' }
,该如何声明?这样做的旧方法是:
declare global {
interface Window {
foo: { bar: string }
}
}
它会产生此错误
TS2669:全局作用域的扩展只能直接嵌套在外部模块或环境模块声明中。
看起来只是在某些d.ts文件中添加记录是可以的。像这样:
interface Window {
foo: { bar: string }
}
但是据我了解,在这种情况下,我无法在该文件中导入某些类型并在声明中使用它们,而不是例如string
。
那我想做些什么呢?
import { MyTypeFromSomewhere } from './somewhere'
interface Window {
foo: { bar: MyTypeFromSomewhere }
}
如何使用新属性扩展Window界面并为其指定类型?