ทาง Microsoft ได้ปล่อย TypeScript 7.0 ออกมาให้ใช้งานแล้ว
โดยทำการเปลี่ยนแปลงด้วยการเขียนใหม่ด้วยภาษา Go มีเป้าหมาย

  • ทำงานกับ code ที่พัฒนาด้วย TypeScript 6
  • ปรับปรุงความเร็วในการ compile ให้เร็วขึ้น (multi-cores, parallel, concurent)
  • ปรับปรุง developer experience ให้ดีขึ้น

มาดูในรายละเอียดกันนิดหน่อย

ความเร็วที่เพิ่มขึ้นมานั้น ไม่ใช่แค่ compile time

แต่ต้องเพิ่มความเร็วใน development process กันเลย
ซึ่งมันถึงจะเป็นการมอบประสบการณ์ที่ดีกว่า

ในขั้นตอนของการ compile นั้น จะมีทั้งเรื่องของ
type checking, build project, incremental build, reference project
รวมไปถึง project ขนาดใหญ่ (monorepo)
ซึ่งตรงนี้จะทำงานแบบ parallel โดย default
มีการ share memory กัน และ utilize resource เป็นอย่างดี
และในส่วนของ overhead ตอน runtime ก็ลดลงอย่างมาก (NodeJs -> Go)

แต่เพียงเท่านี้มันยังไม่ practical มากนักสำหรับการพัฒนา

จึงต้องปรับปรุงตั้งแต่การเปิด editor มาใช้งานเลย
โดยในรูปแบบเดิมมีขั้นตอนการทำงานดังนี้

  • เปิด project/folder ใน VS Code
  • ทำการ start TypeScript Language Service ขึ้นมา (NodeJS)
  • ทำการ indexing project
  • มี autocomplete ให้ใช้งาน
  • มี go to definition ให้ใช้งาน
  • มี rename ให้ใช้งาน

จะพบว่ายิ่ง project ใหญ่มากเท่าไร ขั้นตอนการทำงานเหล่านี้ยิ่งช้า
รวมทั้งใช้ resource ต่าง ๆ เยอะมากขึ้น

แต่เมื่อปรับเปลี่ยนมาใช้งาน TypeScript 7 แล้ว
จะเปลี่ยนมาใช้ Native Go Language Server แทน
ทำงานต่างๆ แบบ parallel
ช่วยให้การทำงานต่าง ๆ รวดเร็วขึ้น
อีกอย่างใช้ resource น้อยลง ซึ่งตรงนี้ช่วยลดค่าใช้จ่ายของเครื่องได้
หรือใน CI/CD ก็ยิ่งได้ประโยชน์มากขึ้นอีกด้วย

สิ่งที่น่าสนใจคือ TypeScript 7 นั้น
ได้ให้บริษัท หรือ project ต่าง ๆ ได้ลองใช้งานก่อน
เพื่อทดลองใช้งาน และเอา feedback ต่าง ๆ มาปรับปรุง
และเพื่อสร้างความมั่นใจในการเปลี่ยนแปลงครั้งนี้อีกด้วย

ดังนั้นมาลองใช้งานกันดู

ซึ่งสามารถติดตั้งทั้ง version 6 และ 7 ได้เลย

จากนั้นลองทำการ compile แบบนี้เขาขี้โม้กันหน่อยสิ
เช่นทำการ compile code ของ VSCode กันเล่น ๆ

ดู VDO เปิดตัว TypeScript 7 ได้ที่นี่