Próbuję przekonwertować istniejący projekt na Maszynopis i mam problemy z moim testowaniem.Jak zapobiec "Property" ... "nie istnieje na typ" Global "" z jsdom i maszynopis?
Miałem plik instalacyjny dla moich testów, który konfiguruje jsdom tak, że cały mój kod interakcji DOM działa podczas moich testów. Korzystanie maszynopis (TS-węzeł z mocha) Ja zawsze pojawiają się błędy tak:
Property 'window' does not exist on type 'Global'.
Aby to próbowałem łatanie NodeJS.Global interfejs jak tego uniknąć:
declare namespace NodeJS{
interface Global {
document: Document;
window: Window;
navigator: Navigator;
}
}
Ale to nie zmienił byle co.
Jak włączyć te właściwości przeglądarki w globalnej zmiennej NodeJS?
Dodatki:
To mój mocha 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/');
nie może być pewien, że jest to prawidłowa odpowiedź, ale po przejściu przez podobny ból, okazuje się, że plik wewnątrz rozszerzenie interfejsu NodeJS.Global musi być pisane małymi literami, a typy będą ignorować. Ponadto nie może zawierać żadnych instrukcji importowania ani eksportowania u góry - lub będzie postrzegany jako moduł, a nie jako plik typowania. – Izhaki