So machen Sie Web-Worker mit TypeScript und Webpack

Ich habe einige Probleme beim Kompilieren meines Typoskripts, wenn ich versuche, Web-Worker zu verwenden.

Ich habe einen Arbeiter wie folgt definiert:

onmessage = (event:MessageEvent) => {
  var files:FileList = event.data;
    for (var i = 0; i < files.length; i++) {
        postMessage(files[i]);
    }
};

In einem anderen Teil meiner Anwendung verwende ich den Webpack Worker Loader, um meinen Worker wie folgt zu laden:let Worker = require('worker!../../../workers/uploader/main');

Ich habe jedoch einige Probleme damit, dass die Typoskript-Deklarationen mich nicht anschreien, wenn der Antrag transpiliert werden muss. Nach meinen Recherchen muss ich meiner tsconfig-Datei eine weitere Standard-Bibliothek hinzufügen, um die globalen Variablen anzuzeigen, auf die der Worker Zugriff haben muss. Diese habe ich wie folgt angegeben:

{
     "compilerOptions": {
          "lib": [
               "webworker",
               "es6",
               "dom"
          ]
     }
}

Now, wenn ich Webpack laufen lasse, um alles bauen zu lassen, bekomme ich eine Reihe von Fehlern wie diese:C:/Users/hanse/Documents/Frontend/node_modules/typescript/lib/lib.webworker.d.ts:1195:13 Subsequent variable declarations must have the same type. Variable 'navigator' must be of type 'Navigator', but here has type 'WorkerNavigator'.

So lautet meine Frage: Wie gebe ich an, dass der Webworker die Definitionen von lib.webworker.d.ts verwendet und alles andere den normalen Definitionen folgt?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage