首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误TS2554:预期的2-3参数,但得到1

错误TS2554:预期的2-3参数,但得到1
EN

Stack Overflow用户
提问于 2018-05-18 00:01:19
回答 1查看 12.9K关注 0票数 3

对于给定的tsconfig.json

代码语言:javascript
复制
{

    "compilerOptions": {

      "lib": ["es2015", "dom"]
    },
    "files": [
      "./project1/tstut.ts",
      "./project1/worker.ts"

    ]
  }

文件夹结构

1)

对于以下代码(./project1/tstut.ts),

代码语言:javascript
复制
if(window.Worker){
  console.log('Workers are available');
}
....
let worker: Worker = new Worker('worker.js');
worker.postMessage('do some work')

如何解决下面的打字错误?

代码语言:javascript
复制
Property 'Worker' does not exist on type 'Window'

2)

对于以下工作人员代码(./project1/worker.ts),

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-18 23:39:48

工人们不生活在窗口对象上。

代码语言:javascript
复制
if (typeof(Worker) !== "undefined") {
    // Yes! Web worker support!
    // Some code.....
} else {
    // Sorry! No Web Worker support..
}

若要避免webworker postMessage错误,请在tsconfig中使用webworker库或如下所示

代码语言:javascript
复制
const ctx: Worker = self as any;
...
ctx.postMessage({message:count});

您的代码示例

tstut.js

代码语言:javascript
复制
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 (这里不需要检查员工支持)

代码语言:javascript
复制
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 });
    }
})
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50402004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档