วิดีโอนี้มาจากงาน React Summit 2024
🧠 เป็นหนึ่งในทอล์กที่พูดถึงปัญหาใหญ่ของสาย JavaScript/TypeScript คือ...
**"ทำไม TypeScript ถึงช้า?" และ "เราจะแก้มันยังไงได้บ้าง?"
🎙️ โดย Mike Hartington (ทีม NX) — คนทำเครื่องมือสำหรับ Monorepo ที่ช่วยจัดการโปรเจกต์ใหญ่ ๆ
🔥
หัวข้อ:
"TypeScript ช้าไปมั้ย?"
🎙️ โดย Mike จากทีม NX
💡
สรุปเนื้อหาหลัก
😩 TypeScript ช้า! แต่เราชอบมันอยู่ดี
- ใช้แล้วเข้าใจโค้ดดีขึ้น โดยเฉพาะเวลาใช้กับไลบรารีจำนวนมาก
- แต่... มันช้ามาก ทั้งตอน build และตอนใช้งานใน editor
⚙️ ปัญหาที่แท้จริงคือ?
🧱 1.
Build ช้า เพราะโปรเจกต์ใหญ่เกิน!
- ถ้าใช้ TypeScript กับไฟล์เยอะ ๆ → เครื่องแรงยังไงก็หน่วง
- แนวทางแก้:
→ แบ่งโปรเจกต์ใหญ่เป็นโมดูลเล็ก ๆ
→ ใช้ monorepo + workspace (เช่น Nx, TurboRepo)
🔁 2.
Path Aliases หลอกเรา!
@lib/button
ดูเหมือน import จาก node_modules แต่จริง ๆ คือ path ชี้กลับมาที่ไฟล์เดิม- สรุป TypeScript ก็ยังต้องวิเคราะห์ไฟล์เยอะเท่าเดิม
🔄 3.
ใช้ Project References สิ!
- ทำให้ TypeScript รู้ว่าแต่ละ package แยกกันจริง ๆ
- แคชและเช็กไทป์แยกทีละโมดูล → เร็วขึ้นเห็น ๆ
🧠 4.
Editor Lag? เพราะไทป์มันซับซ้อนเกิน
- ถ้าใช้ TypeScript ฟีเจอร์เทพ ๆ (อย่าง template literal types, infer, recursive types ฯลฯ)
→ Editor จะแฮงค์
✅ ทางแก้: พยายามอย่า “ฉลาด” เกินไป กับ type
✅ หรือ Prebuild type ทั้งหมด แล้วแจกเป็น.d.ts
🌈 ข่าวดีจากทีม TypeScript
🎉 กำลังพัฒนา TypeScript Compiler เขียนด้วย Go (TS-Go)
💨 เร็วขึ้นหลายเท่า แต่คงต้องรอ TypeScript 7.0 (ยังอีกสักพัก)
✅ สรุปแนวทางแก้แบบง่าย ๆ
- 🪓 แยกโปรเจกต์ให้เล็กลง
- 🗂️ ใช้ Monorepo + Workspaces
- 🔗 ใช้ Project References แทน Path Aliases
- 🧼 งด type recursion / complexity เกินเหตุ
- ⚒️ พิจารณา prebuild
.d.ts
ช่วย editor ทำงานไวขึ้น