根据给定的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')
如何解决以下 TypeScript 错误?
Property 'Worker' does not exist on type 'Window'
以下是工人代码(./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。
根据方案,不能解决我的问题。
如何解决
postMessage()
的以下错误?在运行tsc
时出现:Expecting 2-3 arguments, but got 1
。
window.alert
不期望语法alert in window
。为什么Worker
需要使用Worker in window
语法呢? - overexchangeWorker in window
和window.Worker
有什么不同?这两种语法都表示window
对象中的一个属性,不是吗? - overexchangealert
被定义为window
对象上的属性,而Worker
则没有。 - arteminterface Worker extends EventTarget,AbstractWorker {}
,那么window中的Worker
语法如何表明Worker
是window
的属性? - overexchange