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
ถ้าคุณกำลังใช้ฟังก์ชัน postMessage ของ port ใน MessageChannel คุณก็ต้องส่งพารามิเตอร์เพียงตัวเดียวเท่านั้น
event.ports[0].postMessage(data)
ถ้าคุณกำลังใช้ window.postMessage คุณต้องส่งพารามิเตอร์ 2 หรือ 3 ตัว
window.postMessage(data, origin, [transfer])
คำตอบ #2
คุณจะต้องเพิ่ม webworker ใน tsconfig.json ของคุณหรือสร้างโปรเจกต์ TS แยกสำหรับ worker ของคุณ เนื่องจาก postMessage มี API ที่แตกต่างกันใน worker และในสภาพแวดล้อมของเบราว์เซอร์
"compilerOptions" : {
"lib": [
"webworker"
