TypeScript 7.0: จุดจบของ JS เขียน JS และรุ่งอรุณแห่ง Native Core

หากคุณเป็น Web Developer ในปี 2025 คุณคงคุ้นเคยกับความรู้สึกนี้ดี: กด Save ไฟล์ปุ๊บ... ต้องรอ 2-3 วินาที (หรือนานกว่านั้นใน Monorepo ใหญ่ๆ) กว่า Type Error จะเด้งขึ้นมา หรือกว่าหน้าเว็บจะ Hot Reload เสร็จ ในขณะที่เครื่องมือรอบตัวเราอย่าง Vite (Esbuild), SWC, หรือ Turbopack พัฒนาไปจนเร็วระดับ "Instant" (ระดับมิลลิวินาที) แต่ตัว TypeScript Compiler (tsc) กลับยังดูเหมือนคนแก่ที่วิ่งตามไม่ทัน ทั้งที่มันคือหัวใจสำคัญที่สุดของโปรเจกต์ ทำไมถึงเป็นแบบนั้น? คำตอบนั้นเรียบง่ายแต่เจ็บปวด: "เพราะ TypeScript เขียนด้วย TypeScript" ข่าวใหญ่ล่าสุดจาก Microsoft เกี่ยวกับ TypeScript 7.0 (Project Corsa) ที่จะเปลี่ยน Core ทั้งหมดให้เป็น Native Language จึงไม่ใช่แค่การอัปเดตเวอร์ชันธรรมดา แต่มันคือการ "รื้อรากฐาน" ครั้งสำคัญที่สุดในประวัติศาสตร์ Web Development
TypeScript 7.0: จุดจบของ JS เขียน JS และรุ่งอรุณแห่ง Native Core

คอขวดที่ชื่อว่า V8 และ Node.js

เพื่อเข้าใจว่าทำไมเราต้องย้ายไป Native เราต้องเข้าใจข้อจำกัดของ Architecture ปัจจุบันก่อน

ปัจจุบัน tsc รันบน Node.js ซึ่งใช้ V8 Engine แม้ V8 จะเป็น JIT (Just-In-Time) Compiler ที่เร็วที่สุดในโลก แต่งานประเภท "Compiler" นั้นเป็นงานที่โหดหินและไม่ถูกโฉลกกับ JavaScript นัก ด้วยเหตุผล 3 ข้อ:

  1. Memory Overhead & Garbage Collection: การวิเคราะห์ Type ของโปรเจกต์ขนาดใหญ่ ต้องมีการสร้าง Object นับล้านชิ้น (AST Nodes, Symbols, Types) ใน Memory Node.js ต้องคอยหยุดทำงานเพื่อทำ Garbage Collection (GC) ซึ่งทำให้เกิดอาการ "กระตุก" หรือหยุดชะงักเป็นระยะ ยิ่งโปรเจกต์ใหญ่ GC ยิ่งทำงานหนัก
  2. Single-Threaded Limitations: JavaScript โดยธรรมชาติเป็น Single-threaded การจะกระจายงาน Type Checking ไปให้ CPU ทุก Core ช่วยกันทำนั้นยากมาก และมี Overhead ในการส่งข้อมูลข้าม Thread สูง
  3. JIT Warm-up: ทุกครั้งที่รัน tsc V8 ต้องเสียเวลาช่วงแรกในการ "Warm up" เพื่อ Optimize โค้ดที่รันบ่อยๆ (Hot Paths) ทำให้ Cold Start ช้ากว่า Native ที่ Compile มาเป็น Machine Code แล้ว

Project Corsa: การเดิมพันด้วย Native Core

Project Corsa หรือ TypeScript 7.0 คือความพยายามที่จะเขียน Compiler ใหม่ทั้งหมดด้วยภาษา Native (คาดการณ์ว่าเป็น Rust หรือ Go ซึ่งเป็นภาษาที่จัดการ Memory ได้แม่นยำและรองรับ Parallelism ได้ดีเยี่ยม)

สิ่งที่คาดว่าจะเกิดขึ้นคือ:

  • Performance: เร็วขึ้น 10-50 เท่า (อ้างอิงจาก Benchmark ของ SWC ที่มาแทน Babel)
  • Parallel Type Checking: สามารถใช้ CPU 16 Cores เช็ค Type พร้อมกันได้เต็มประสิทธิภาพ
  • Low Memory Footprint: กินรมน้อยลงมหาศาล เพราะไม่ต้องแบก Runtime ของ Node.js

performance-benchmark
performance-benchmark

ดาบสองคม: ราคาที่ต้องจ่าย

แม้ความเร็วจะหอมหวาน แต่การทิ้ง "Self-hosting" (การใช้ภาษาตัวเองเขียนตัวแปลภาษาตัวเอง) มีราคาที่ต้องจ่ายแพงมากสำหรับ Ecosystem:

1. The "Black Box" Problem

เมื่อก่อน ถ้าเราเจอ Bug ใน tsc เราสามารถ Cmd+Click เข้าไปดู Source Code ใน node_modules แล้วทำความเข้าใจ หรือแม้แต่ Patch เองได้ เพราะมันเป็น TypeScript ที่เราเขียนกันอยู่ทุกวัน แต่ในเวอร์ชัน 7.0 ตัว Compiler จะกลายเป็น Binary File ที่อ่านไม่ออก การ Debug จะกลายเป็นเรื่องของ System Engineer ไม่ใช่ Web Developer อีกต่อไป

2. Plugin Ecosystem จะยากขึ้น

การเขียน Plugin เพื่อ Hook เข้าไปในกระบวนการ Compile อาจจะต้องเปลี่ยนไปใช้ WASM (WebAssembly) หรือต้องเขียนด้วย Rust/Go แทน ซึ่งเป็นการเพิ่มกำแพงความรู้ (Barrier to Entry) ให้กับชุมชนนักพัฒนา

อนาคตของ Web Tooling: ไม่มีที่ว่างสำหรับ JS?

ปรากฏการณ์นี้ตอกย้ำเทรนด์ที่ชัดเจนในปี 2025-2026 ว่า:

"JavaScript มีไว้สำหรับเขียน App ไม่ได้มีไว้สำหรับสร้าง Tool"

เราเห็นการเปลี่ยนแปลงนี้มาแล้ว:

  • Webpack (JS) ➡️ Turbopack (Rust)
  • Babel (JS) ➡️ SWC (Rust)
  • Prettier/ESLint ➡️ Biome (Rust)
  • และล่าสุด tsc (TS) ➡️ Native

บทสรุป: Developer ต้องปรับตัวอย่างไร?

การมาของ TypeScript 7.0 เป็นเรื่องที่น่าตื่นเต้นในแง่ Productivity งานเราจะเสร็จไวขึ้น รอคอมไพล์น้อยลง แต่ในฐานะ Software Engineer เราอาจต้องเริ่มถามตัวเองว่า:

"เราพอใจที่จะเป็นแค่ ผู้ใช้ (Consumer) เครื่องมือที่เร็วปานสายฟ้า หรือเราควรเริ่มศึกษาภาษาอย่าง Rust หรือ Go เพื่อที่จะยังคงเป็น ผู้สร้าง (Creator) ที่เข้าใจเครื่องมือที่ตัวเองใช้ได้อย่างถ่องแท้?"

ปี 2026 อาจจะเป็นปีที่เราต้องบอกลาเต่าตัวเก่า และกระโดดขึ้นจรวดลำใหม่... หวังว่าคุณจะรัดเข็มขัดแน่นพอนะครับ

ถ้าชอบบทความแนว Deep Tech แบบนี้ อย่าลืมกด Share และติดตามเพจ Sandwiched Developer ไว้นะครับ

sandwiched-developer-author
s
เขียนโดย

sirawich

อ่านต่อ

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

study-case-reddit-migrate-some-features-from-python-to-golang-cover-image
sandwiched-developer-author
s
sirawich
·ธ.ค. 1, 2025

Study Case: Reddit ทำการย้ายบาง feature จาก Python ไป Golang

grab-migration-from-go-to-rust-cover-image
sandwiched-developer-author
s
sirawich
·ต.ค. 8, 2025

News: Grab ได้ทำการ migrate service บางส่วนจาก Go เป็น Rust

react-submit-2024-topic-why-typescript-so-slow
sandwiched-developer-author
s
sirawich
·มิ.ย. 24, 2025

React Summit 2024: ทำไม TypeScript ถึงช้า

sandwiched-developer-golang-art-of-empty-world
sandwiched-developer-author
s
sirawich
·มิ.ย. 20, 2025

🕊️ Golang: ศิลปะแห่งความว่างเปล่าที่เปลี่ยนโลก

sandwiched-developer-go-ภาษาของผู้ไม่เร่งรีบ-แต่ไปถึงเส้นชัยก่อน
sandwiched-developer-author
s
sirawich
·มิ.ย. 3, 2025

🐢 Go: ภาษาของผู้ไม่เร่งรีบ แต่ไปถึงเส้นชัยก่อน

sandwiched-developer-ts-cannot-missing
sandwiched-developer-author
s
sirawich
·มิ.ย. 1, 2025

TypeScript เสียงสะท้อนจากอนาคตที่ย้อนกลับมาบอกว่า “เธอพลาดไม่ได้อีกแล้ว”

sandwiched-developer-ts-zoom-glasses
sandwiched-developer-author
s
sirawich
·พ.ค. 31, 2025

TypeScript แว่นตาแห่งความชัดเจนในโลกที่พร่าเบลอ

sandwiched-developer-rust-slient
sandwiched-developer-author
s
sirawich
·พ.ค. 31, 2025

Rust ความเงียบงันของเหล็กกล้า

golang-ภาษาแห่งความสงบ-ที่เกิดมาเพื่อรองรับความวุ่นวาย
sandwiched-developer-author
s
sirawich
·พ.ค. 31, 2025

Golang ภาษาแห่งความสงบ ที่เกิดมาเพื่อรองรับความวุ่นวาย