我正在使用摩卡/柴来进行单位测试,并嘲笑window
如下:
global.window = { innerHeight: 1000, innerWidth: 1000 };
可以理解的是,tslint抱怨:
属性'窗口'在类型'global'
上不存在
一些问题... Global
是否内置nodejs/tyspript类型?我目前正在用文件顶部用declare var global
的警告沉默……但是这是处理此问题的最佳方法吗?我注意到我也可以通过以下警告解决:
declare global {
namespace NodeJS {
interface Global {
window: any;
}
}
}
最好是,我想扩展现有的Global
类型,以接受window
属性。谢谢。
Global
是内置的nodejs/tyspript类型?
是。参见@types/node/index.d.ts
;在该文件中,他们声明了一个NodeJS
名称空间,在此中,Global
接口(就像您完成的一样)。
我目前正在用
沉默警告declare var global
听起来您没有安装节点打字(这些打字包括行declare var global: NodeJS.Global;
,因此您不必自己做任何此类声明)。运行:
npm install --save-dev @types/node
或,如果您使用yarn
:
yarn add -D @types/node
最好是,我想扩展现有的
Global
类型以接受window
属性。
您主要在那里。只需用window: Window;
替换window: any;
即可。注意:您将需要tsconfig.json
的lib
部分才能包括dom
来提供Window
接口。
您可能很快就会发现您也想增强全局document
和navigator
(同样,这两个都是在dom
LIB中定义的,因此需要它):
interface Global {
document: Document;
window: Window;
navigator: Navigator;
}