(打字稿)属性'窗口'类型'全球'

时间:2017-08-29 20:42:39

标签: javascript node.js typescript

我正在使用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属性。感谢。

1 个答案:

答案 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 Windowdocument(同样,它们都在navigator lib中定义,因此需要):

dom