当我尝试使用Web worker时,我遇到了一些正确编译我的打字稿的问题.
我有一个像这样定义的工人:
onmessage = (event:MessageEvent) => {
var files:FileList = event.data;
for (var i = 0; i < files.length; i++) {
postMessage(files[i]);
}
};
Run Code Online (Sandbox Code Playgroud)
在我的应用程序的另一部分,我正在使用webpack worker loader来加载我的worker,如下所示: let Worker = require('worker!../../../workers/uploader/main');
然而,当我需要编译应用程序时,我会遇到一些问题,使得打字稿声明不会对我大喊大叫.根据我的研究,我必须在我的tsconfig文件中添加另一个标准库,以公开worker需要访问的全局变量.这些我指定如下:
{
"compilerOptions": {
"lib": [
"webworker",
"es6",
"dom"
]
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我运行webpack让它构建一切时,我得到了一堆这样的错误: 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'.
所以我的问题是:如何指定webworker使用lib.webworker.d.ts定义,其他一切遵循正常的定义?
我正在使用 Angular v8。我有一个名为的文件model.ts,如下所示。
import {map} from 'rxjs/operators';
export class Person {
constructor() { }
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个名为的 WebWorker 文件test.worker.ts,如下所示。
/// <reference lib="webworker" />
import {Person} from './bo/model';
addEventListener('message', ({ data }) => {
const response = `worker response to ${data}`;
postMessage(response);
});
Run Code Online (Sandbox Code Playgroud)
当我输入时,ng compile我得到以下内容ERROR。
./src/app/test.worker.ts (./node_modules/worker-plugin/dist/loader.js!./src/app/test.worker.ts) 中的错误
模块构建失败(来自 ./node_modules/worker-plugin/dist/loader.js):
错误:node_modules/rxjs/internal/types.d.ts(45,13):错误 TS2339:类型“SymbolConstructor”上不存在属性“observable”。
在 AngularCompilerPlugin._update (/Users/jwayne/my-app/node_modules/@ngtools/webpack/src/angular_compiler_plugin.js:767:31)
在 processTicksAndRejections (internal/process/task_queues.js:89:5)
在异步 AngularCompilerPlugin._make (/Users/jwayne/my-app/node_modules/@ngtools/webpack/src/angular_compiler_plugin.js:658:13)
如果我注释掉import {map} from 'rxjs/operators',那么我可以编译。导入导入其他库的库是否有限制?
有趣的是,如果我执行此导入,import {HttpClient} from '@angular/common/http';则会出现如下不同的错误。
./src/app/test.worker.ts …