Javascript 错误TS2554:应为2-3个参数,但得到1个
使用给定的Javascript 错误TS2554:应为2-3个参数,但得到1个,javascript,typescript,web-worker,Javascript,Typescript,Web Worker,使用给定的tsconfig.json { "compilerOptions": { "lib": ["es2015", "dom"] }, "files": [ "./project1/tstut.ts", "./project1/worker.ts" ] } 及 (一) 对于以下代码(/project1/tstut.ts) 如何解决以下类型脚本错误 Property 'Worker' does not exist
tsconfig.json
{
"compilerOptions": {
"lib": ["es2015", "dom"]
},
"files": [
"./project1/tstut.ts",
"./project1/worker.ts"
]
}
及
(一) 对于以下代码(
/project1/tstut.ts
)
如何解决以下类型脚本错误
Property 'Worker' does not exist on type 'Window'
(二)
对于以下工作代码(/project1/worker.ts
)
self.addEventListener('message',(e)=>{
//控制台日志(e)
如果(例如,数据===‘做一些工作’){
log('工人即将开始一些工作');
让计数:数字=0;
对于(设i:number=0;i工人不住在窗口对象上)
if (typeof(Worker) !== "undefined") {
// Yes! Web worker support!
// Some code.....
} else {
// Sorry! No Web Worker support..
}
要避免webworker postMessage错误,请在tsconfig中使用“webworker”库或以下命令
const ctx: Worker = self as any;
...
ctx.postMessage({message:count});
您的代码示例
tstut.js
if(typeof(Worker) !== 'undefined'){
const worker = new Worker('worker.js');
worker.postMessage('do some work');
worker.addEventListener('message', function (e) {
//console.log(e);
console.log(e.data);
});
}
worker.js(此处无需检查工人支持)
const ctx:Worker=self as any;
ctx.addEventListener('消息',(e)=>{
//控制台日志(e)
如果(例如,数据===‘做一些工作’){
log('工人即将开始一些工作');
让计数:数字=0;
for(设i:number=0;i<1000;i++){
计数+=i;
}
postMessage({message:count});
}
})
使用if('Worker'在窗口中)
instead@artem例如,window.alert
不需要语法窗口中的alert
。为什么窗口中的Worker
需要语法Worker
?但是,例如,声明为独立(全局)typescript DOM类型中的对象,不需要语法window.Worker
@artem窗口中的Worker
与window.Worker
有什么不同?这两种语法不是都意味着window
对象中的属性吗?是的,它是javascript语法,在编译时不检查它,只有在运行时代码流进入否则
阻塞并说不支持webworker
。我需要在tsconfig.json
中做一些更改吗?tsconfig.json
在查询中,因为您在Worker内部执行Worker检查。不需要这样做。在JS中,我们有SharedWorker
对象。我正在尝试使用let Worker:s执行相同的代码haredWorker=new SharedWorker('worker.js');
但我看到错误找不到名称'SharedWorker'
我可以使用:让worker:SharedWorker.SharedWorker=new SharedWorker('worker.js');
安装类型定义后,但是worker.postMessage('do some work'))
不起作用我认为它在.tsconfig文件中被称为“webworker”而不是“webworkers”库,根据。
const ctx: Worker = self as any;
...
ctx.postMessage({message:count});
if(typeof(Worker) !== 'undefined'){
const worker = new Worker('worker.js');
worker.postMessage('do some work');
worker.addEventListener('message', function (e) {
//console.log(e);
console.log(e.data);
});
}
const ctx: Worker = self as any;
ctx.addEventListener('message', (e) => {
// console.log(e)
if (e.data === 'do some work') {
console.log('Worker is about to start some work');
let count: number = 0;
for (let i: number = 0; i < 1000; i++) {
count += i;
}
ctx.postMessage({ message: count });
}
})