Typescript Postmessage 在一個參數和兩個參數時失敗
有 TypeScript 專案。
當這個:postMessage(result);
我懂這個..
預期 2-3 個參數,但得到 1 個。預期 2-3 個參數,但得到 1 個。
當這個:postMessage(result, '*');
我懂這個..
Uncaught TypeError: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': Overload resolution failed.
at runParser
Typescript 在這裡想要什麼?是一個參數還是兩個參數?為什麼這會造成問題?
答案#1
如果你正在使用 MessageChannel 的 port postMessage 函數,那麼你只能傳遞一個參數。
event.ports[0].postMessage(data)
如果你正在使用 window.postMessage,那麼你必須傳遞 2 或 3 個參數。
window.postMessage(data, origin, [transfer])
答案#2
你將需要在 tsconfig.json 中添加 webworker,或者為你的 worker 建立一個單獨的 TS 專案,因為 postMessage 在 worker 和瀏覽器環境中的 API 不同。
"compilerOptions" : {
"lib": [
"webworker"
