【发布时间】:2019-12-20 10:36:27
【问题描述】:
给定tsconfig.json,
{
"compilerOptions": {
"lib": ["es2015", "dom"]
},
"files": [
"./project1/tstut.ts",
"./project1/worker.ts"
]
}
1)
对于下面的代码(./project1/tstut.ts),
if(window.Worker){
console.log('Workers are available');
}
....
let worker: Worker = new Worker('worker.js');
worker.postMessage('do some work')
如何解决以下打字稿错误?
Property 'Worker' does not exist on type 'Window'
2)
对于下面的工人代码(./project1/worker.ts),
self.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;
}
self.postMessage({message:count});
}
})
JS 允许语法self.postMessage({message: count})
https://github.com/Microsoft/TypeScript/issues/582
鉴于scenario 不适合我的情况。
如何解决postMessage() 的以下错误?正在运行tsc
Expecting 2-3 arguments, but got 1
【问题讨论】:
-
改用
if ('Worker' in window) -
@artem 例如,
window.alert不需要语法alert in window。为什么Worker in window语法应该用于Worker? -
但是 Worker,例如,在 typescript DOM 类型中被声明为独立(全局)对象,并且不需要语法
window.Worker -
@artem
Worker in window与window.Worker有何不同?这两种语法不是都意味着window对象中的属性吗? -
是的,是javascript语法,编译时不检查,只在运行时检查
标签: javascript typescript web-worker