我尝试将现有项目转换为使用Typescript,但是在测试设置中却遇到了问题。
我有一个用于测试的安装文件,用于设置jsdom,以便我所有的DOM交互代码都可以在测试期间使用。使用Typescript(带有摩卡的ts节点),我总是会收到这样的错误:
Property 'window' does not exist on type 'Global'.
为了防止这种情况,我尝试像这样修补NodeJS.Global接口:
declare namespace NodeJS{
  interface Global {
    document: Document;
    window: Window;
    navigator: Navigator;
  }
}
但这并没有改变任何东西。
如何在NodeJS全局变量上启用这些浏览器属性?
附加功能:
这是我的摩卡咖啡setup.ts:
import { jsdom, changeURL } from 'jsdom';
const exposedProperties = ['window', 'navigator', 'document'];
global.document = jsdom('');
global.window = global.document.defaultView;
Object.keys(global.document.defaultView).forEach((property) => {
  if (typeof global[property] === 'undefined') {
    exposedProperties.push(property);
    global[property] = global.document.defaultView[property];
  }
});
global.navigator = {
  userAgent: 'node.js',
};
changeURL(global.window, 'http://example.com/');