我正在使用Mocha / Chai进行单元测试,并嘲笑window
如下:
global.window = { innerHeight: 1000, innerWidth: 1000 };
可以理解的是,TSLint抱怨说:
财产'窗口'类型' Global'
上不存在
一些问题......是Global
内置的NodeJS / Typescript类型?我目前正在使用文件顶部的declare var global
来警告警告......但这是处理此问题的最佳方法吗?我注意到我也可以通过以下方式解决警告:
declare global {
namespace NodeJS {
interface Global {
window: any;
}
}
}
最好,我希望扩展现有的Global
类型以接受window
属性。感谢。
答案 0 :(得分:2)
Global
是内置的NodeJS / Typescript类型吗?
是的。参见@types/node/index.d.ts
;在该文件中,它们声明一个NodeJS
命名空间,并在其中声明一个Global
接口(就像您所做的那样)。
我当前正在用
declare var global
静默警告
听起来像您没有安装Node类型(这些类型包括行declare var global: NodeJS.Global;
,所以您不必自己进行任何此类声明)。运行:
npm install --save-dev @types/node
或者,如果您使用yarn
:
yarn add -D @types/node
最好,我想扩展现有的
Global
类型以也接受window
属性。
您几乎在那里。只需将window: any;
替换为window: Window;
。注意:您将需要tsconfig.json
的{{1}}部分包含lib
来提供dom
界面。
您可能很快会发现,您还想扩充Global Window
和document
(同样,它们都在navigator
lib中定义,因此需要):>
dom