“后续的variables声明必须具有相同的types”

我正在关注这个链接,使用webworker-thread启动一个示例节点js项目。 https://www.npmjs.com/package/webworker-threads

这里是我的ts代码:

var Worker = require('webworker-threads').Worker; // var w = new Worker('worker.js'); // Standard API // You may also pass in a function: var worker = new Worker(function(){ postMessage("I'm working before postMessage('ali')."); this.onmessage = function(event) { postMessage('Hi ' + event.data); self.close(); }; }); worker.onmessage = function(event) { console.log("Worker said : " + event.data); }; worker.postMessage('ali'); 

我收到这个错误:

 C:\...\node_modules\ts-node\src\index.ts:300 throw new TSError(formatDiagnostics(diagnosticList, cwd, ts, lineOffset)) ^ TSError: ⨯ Unable to compile TypeScript server.ts (1,5): Subsequent variable declarations must have the same type. Variable 'Worker' must be of type '{ new (stringUrl: string): Worker; prototype: Worker; }', but here has type 'any'. (2403) server.ts (5,25): Argument of type '() => void' is not assignable to parameter of type 'string'. (2345) server.ts (6,3): Supplied parameters do not match any signature of call target. (2346) server.ts (7,3): 'this' implicitly has type 'any' because it does not have a type annotation. (2683) server.ts (7,29): Parameter 'event' implicitly has an 'any' type. (7006) server.ts (8,5): Supplied parameters do not match any signature of call target. (2346) server.ts (12,29): Parameter 'event' implicitly has an 'any' type. (7006) at getOutput (C:\...\node_modules\ts-node\src\index.ts:300:15) at C:\...\node_modules\ts-node\src\index.ts:330:16 at Object.compile (C:\...\node_modules\ts-node\src\index.ts:489:17) at Module.m._compile (C:\...\node_modules\ts-node\src\index.ts:382:43) at Module._extensions..js (module.js:579:10) at Object.require.extensions.(anonymous function) [as .ts] (C:\...\node_modules\ts-node\src\index.ts:385:12) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Function.Module.runMain (module.js:604:10) 

我不保证这是如此,但据我所见,您正在使用节点导入语法。 如果你正在编译使用打字稿比我可能build议使用打字稿导入语法:

 import {Worker} from 'webworker-threads' 

或者,在您的打字稿编译器configuration文件集中:

 "allowJs":true 

这可能服务器也启用节点语法。 或者你也可以这样做:

 var Worker: any = <any>(require('webworker-threads').Worker); 

这可能会编译,但是你将失去types信息。