Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript Postmessage因一个参数和两个参数而失败_Typescript - Fatal编程技术网

Typescript Postmessage因一个参数和两个参数而失败

Typescript Postmessage因一个参数和两个参数而失败,typescript,Typescript,有一个Typescript项目 当这:postMessage(结果)时 我明白了 Uncaught TypeError: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': Overload resolution failed. at runParser 应为2-3个参数,但得到1。应为2-3个参数,但得到1 当这个:postMessage(结果'*') 我明白了 Uncaught TypeError: Fa

有一个Typescript项目

当这:
postMessage(结果)时

我明白了

Uncaught TypeError: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': Overload resolution failed.
    at runParser
应为2-3个参数,但得到1。
应为2-3个参数,但得到1

当这个:
postMessage(结果'*')

我明白了

Uncaught TypeError: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': Overload resolution failed.
    at runParser

Typescript在这里想要什么?这是一个或两个论点?为什么会出现问题?

如果使用MessageChannel的port postMessage函数,则只需传递一个参数

event.ports[0].postMessage(data)
如果您使用的是window.postMessage,则必须传递2或3个参数

window.postMessage(data, origin, [transfer])

您必须将webworker添加到tsconfig.json中,或者为您的worker创建一个单独的TS项目,因为postMessage在和环境中具有不同的API

"compilerOptions" : {
    "lib": [
        "webworker"

第一个显然是错误的,因为它需要2或3个参数。请参阅上的文档。第二个应该是
window。postMessage
,其中
window
是您要发布到的窗口。下面是一个示例,此错误发生在worker范围内,而不是WindowRight范围内,抱歉。这肯定很奇怪,因为在这种情况下允许1个值。我发现了一个类似的问题可能会有所帮助。哦,尝试在编辑器中导航到
postMessage
(例如,在VSCode中按ctrl键)。我打赌它指向窗口对象的版本,而不是工作版本。我敢打赌,这就是它抱怨的原因。尝试更加明确(我认为语法是
self.postMessage(result)
)。