Development

TypeScript-Go (tsgo) คืออะไร? Native Compiler เร็วขึ้น 10 เท่าสำหรับทีมพัฒนาไทย 2026

TypeScript-Go (tsgo) คือการ port TypeScript Compiler ไปยัง Go ทำให้ type-check เร็วขึ้น 10 เท่า ลด memory ครึ่งหนึ่ง คู่มือทดลองใช้และ migrate สำหรับทีมพัฒนาไทย 2026

AF
ADS FIT Team
·7 นาที
Share:
TypeScript-Go (tsgo) คืออะไร? Native Compiler เร็วขึ้น 10 เท่าสำหรับทีมพัฒนาไทย 2026

# TypeScript-Go (tsgo) คืออะไร? Native Compiler เร็วขึ้น 10 เท่าสำหรับทีมพัฒนาไทย 2026

ทีมพัฒนาที่ทำโปรเจกต์ขนาดกลางขึ้นไปด้วย TypeScript คงเคยเจอปัญหาเดียวกัน เปิด VS Code แล้วรอ "Initializing JS/TS language features..." 30 วินาที, รัน tsc --noEmit แล้วต้องรอ 2-5 นาที, build production ใน CI/CD ใช้เวลานานขึ้นเรื่อย ๆ ตามจำนวน file ที่เพิ่มขึ้น

ปลายปี 2025 Microsoft ประกาศ Project Corsa หรือชื่อที่เรียกง่ายกว่า TypeScript-Go (tsgo) ซึ่งเป็นการ port TypeScript Compiler ทั้งตัวจาก JavaScript ไปยัง Go ผลลัพธ์คือ type-check เร็วขึ้น 10 เท่า memory usage ลดลงครึ่งหนึ่ง และ language server ที่ตอบสนองทันใจ

ในคู่มือนี้ทีมพัฒนาไทยจะได้รู้ว่า tsgo ทำงานอย่างไร ใช้เมื่อไรได้ ความเข้ากันได้กับ ecosystem ปัจจุบัน และขั้นตอนการ migrate ที่ปลอดภัย

ทำไม TypeScript ต้องเขียนใหม่ด้วย Go

TypeScript Compiler รุ่นเดิม (tsc) เขียนด้วย TypeScript ซึ่ง compile เป็น JavaScript ทำงานบน Node.js มีข้อจำกัดสำคัญ 3 ข้อ

  • **Single-threaded**: ใช้ประโยชน์จาก CPU multi-core ไม่ได้เต็มที่
  • **Garbage Collection ช้ากว่า**: V8 GC ของ Node.js ไม่เหมาะกับ workload ที่จองหน่วยความจำเยอะ
  • **Startup Time**: load Node.js + parse compiler bundle ใช้เวลา 200-500 ms ก่อนเริ่มทำงาน
  • Go ได้รับเลือกเพราะมี (1) Goroutine สำหรับ parallelism, (2) Compiled binary ขนาดเล็ก, (3) GC ที่ออกแบบมาสำหรับ low-latency workload และ (4) Microsoft มีประสบการณ์ใน Go จากโปรเจกต์ Microsoft 365 และ Azure Linux

    ผลทดสอบประสิทธิภาพ tsgo เทียบกับ tsc

    ตัวเลขจาก benchmark อย่างเป็นทางการของ Microsoft บนโปรเจกต์ขนาดต่างกัน

    | โปรเจกต์ | ขนาด LOC | tsc (เดิม) | tsgo (ใหม่) | Speedup |

    |---|---|---|---|---|

    | VS Code | ~1.5M | 77.8s | 7.5s | 10.4x |

    | Playwright | ~360k | 11.1s | 1.1s | 10.1x |

    | TypeORM | ~270k | 17.5s | 1.3s | 13.5x |

    | date-fns | ~110k | 6.5s | 0.7s | 9.5x |

    | RxJS | ~100k | 4.6s | 0.5s | 9.2x |

    Memory usage ลดลงประมาณ 50% และ language server response time ในการ go-to-definition / find-references เร็วขึ้น 8-12 เท่า ส่งผลให้นักพัฒนาทำงานได้ลื่นไหลขึ้นอย่างชัดเจน

    tsgo ทำงานอย่างไร — สถาปัตยกรรมเบื้องหลัง

    โค้ดของ tsgo ไม่ได้เขียนใหม่จากศูนย์ แต่เป็นการ "port" ทุก algorithm ของ tsc ตัวเดิมไปเป็น Go โดยรักษา semantic 100% เพื่อให้ผลการ type-check ออกมาเหมือนกัน

    ประเด็นทางเทคนิคที่น่าสนใจ:

  • **Concurrent Type-Checking**: tsgo ใช้ Goroutine แยก type-check แต่ละ file ขนาน
  • **Shared Memory Model**: data structure เช่น Symbol Table แชร์ระหว่าง goroutine ลด memory copy
  • **Native AST**: AST สร้างใน Go struct ไม่ใช่ JS object ลด overhead ของ V8
  • **Same .d.ts Output**: tsgo ออก declaration file ตรงกับ tsc ทุก byte
  • การติดตั้งและทดลองใช้

    ขั้นตอนใช้งาน tsgo สำหรับโปรเจกต์ที่มีอยู่แล้ว

  • ขั้น 1 — ติดตั้งผ่าน npm: `npm install --save-dev @typescript/native-preview`
  • ขั้น 2 — รัน `tsgo --noEmit` เพื่อ type-check
  • ขั้น 3 — เปรียบเทียบผลกับ tsc เดิม ตรวจสอบว่า diagnostics ออกมาตรงกัน
  • ขั้น 4 — เพิ่ม script ใน package.json: `"typecheck": "tsgo --noEmit"`
  • ขั้น 5 — ปรับ CI/CD ให้รัน tsgo แทน tsc เพื่อย่นเวลา pipeline
  • สำหรับ VS Code มี extension "TypeScript Native Preview" ที่ใช้ tsgo เป็น language service backend ทำให้ autocomplete และ hover เร็วขึ้นชัดเจน

    ความเข้ากันได้กับ Ecosystem ปัจจุบัน

    ทีมพัฒนาที่ใช้ Library/Tool ต่อไปนี้สามารถใช้ tsgo ได้ทันที

  • ts-node, tsx, vite-node ใช้ TypeScript เป็น dependency แต่ tsgo รักษา API compatibility
  • Webpack, Rollup, Vite, Turbopack, esbuild ใช้ esbuild/swc สำหรับ transpile อยู่แล้ว type-check แยก
  • Jest, Vitest รัน test ผ่าน transpiler อื่น ไม่กระทบ
  • ESLint + @typescript-eslint ใช้ TypeScript program API ปัจจุบัน tsgo support ผ่าน compatibility layer
  • Yarn, pnpm, npm ทุก package manager ใช้ได้
  • ฟีเจอร์ที่ยังต้องระวัง: Project References, Build Mode (--build), และ custom transformers บางตัวอยู่ในระหว่างการ port ตรวจสอบ status ที่ official roadmap ก่อน migrate production

    tsgo เทียบกับทางเลือกอื่น (swc, oxc, biome)

    | Tool | ภาษา | Type-Check | Transpile | Lint | Format |

    |---|---|---|---|---|---|

    | tsgo | Go | ใช่ | ไม่ | ไม่ | ไม่ |

    | swc | Rust | ไม่ | ใช่ | ไม่ | ไม่ |

    | oxc | Rust | กำลังพัฒนา | ใช่ | ใช่ | ใช่ |

    | Biome | Rust | ไม่ | ใช่ | ใช่ | ใช่ |

    | esbuild | Go | ไม่ | ใช่ | ไม่ | ไม่ |

    จุดแตกต่างสำคัญ: tsgo ทำเฉพาะ "type-check" เท่านั้น ไม่ทำ transpile/lint/format จึงไม่แทนที่ swc หรือ Biome แต่ทำงานเสริมกัน ใช้ swc สำหรับ build, tsgo สำหรับ verify types, Biome สำหรับ lint+format

    Roadmap จาก Microsoft

    ตามแผนที่ Microsoft เผยแพร่:

  • ปี 2026 Q1 Beta Release พร้อมรองรับ Project References
  • ปี 2026 Q2 Production-Ready ใช้แทน tsc ใน Microsoft 365 ทั้งหมด
  • ปี 2026 Q4 TypeScript 8 จะใช้ tsgo เป็น default compiler
  • ปี 2027 เปิด Plugin API ใหม่สำหรับ custom transformer ใน Go
  • สรุปและคำแนะนำสำหรับทีมไทย

    TypeScript-Go (tsgo) เป็นการอัปเกรดที่ทีมพัฒนาทุกคนรอคอย ลด build time จากนาทีเหลือวินาที ลด CI cost ทำให้ Developer Experience ดีขึ้นอย่างมีนัยสำคัญ

    คำแนะนำสำหรับ SME ไทย:

  • เริ่มทดลอง tsgo ในสาขา feature branch ทันที สำหรับโปรเจกต์ที่มี LOC > 50,000
  • เพิ่ม tsgo เป็น secondary type-check ใน CI/CD ก่อน เพื่อตรวจสอบความเข้ากัน
  • เก็บ tsc รุ่นเดิมไว้เป็น primary compiler จนกว่าจะ release เป็น production-ready
  • ติดตาม official roadmap และ migration guide ก่อน production rollout
  • ต้องการคำปรึกษาเรื่องการ optimize TypeScript build pipeline, CI/CD performance, หรือสถาปัตยกรรม Frontend สมัยใหม่ ทีม ADS FIT ยินดีให้บริการ ตรวจสอบบทความเพิ่มเติมเรื่อง Cline AI Coding Agent, Cursor, Aider บน blog ของเรา

    Tags

    #TypeScript#tsgo#TypeScript-Go#Compiler#Performance#Microsoft#SME

    สนใจโซลูชันนี้?

    ปรึกษาทีม ADS FIT ฟรี เราพร้อมออกแบบระบบที่ฟิตกับธุรกิจของคุณ

    ติดต่อเรา →

    บทความที่เกี่ยวข้อง