Typescript Postmessage因一个参数和两个参数而失败
有一个Typescript项目 当这: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
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)
)。