Como evitar que "Propriedade '...' não exista no tipo 'Global'" com jsdom e typcript?
Tento converter um projeto existente para usar o Typecript e tenho problemas ao fazê-lo na minha configuração de teste.
Eu tinha um arquivo de instalação para meus testes que configura o jsdom para que todo o meu código de interação DOM funcionasse durante meus testes. Usando o TypeScript (ts-node com mocha) sempre recebo erros como este:
Property 'window' does not exist on type 'Global'.
Para evitar isso, tentei corrigir a interface NodeJS.Global como esta:
declare namespace NodeJS{
interface Global {
document: Document;
window: Window;
navigator: Navigator;
}
}
Mas isso não mudou nada.
Como habilito essas propriedades do navegador na variável global NodeJS?
Extras:
Este é o meu mochasetup.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/');