TypeScript ชนะแล้ว และนี่คือสิ่งที่เราได้รับ

การถกเถียงสิ้นสุดลงแล้ว โปรเจกต์ frontend ใหม่ส่วนใหญ่เลือกใช้ TypeScript เป็นค่าเริ่มต้น ผู้คนไม่จำเป็นต้องมาเถียงกันอีกต่อไปว่าจะนำมันมาใช้ดีหรือไม่

คุณค่าที่แท้จริงไม่ใช่แค่การตรวจจับคำที่พิมพ์ผิด แต่มันลึกซึ้งกว่าคำโฆษณาในตอนแรกมาก

Type ทำหน้าที่เป็นเอกสารประกอบ (documentation) ที่ไม่มีวันล้าสมัย Function signature จะบอกคุณอย่างชัดเจนว่าโค้ดส่วนนั้นต้องการอะไรและจะส่งค่าอะไรกลับมา หากนักพัฒนาเพิ่มตัวเลือกใหม่เข้าไปใน union type ตัวคอมไพเลอร์จะบังคับให้คุณต้องอัปเดตโค้ดทุกส่วนที่เกี่ยวข้อง คอมเมนต์อาจจะเก่าจนใช้งานไม่ได้ แต่ Type จะไม่เป็นเช่นนั้น

การ Refactoring เปลี่ยนจากงานที่น่ากลัวกลายเป็นงานที่ปลอดภัย ในโค้ดที่ไม่มี type การเปลี่ยนชื่อ field ให้ความรู้สึกเหมือนการเสี่ยงดวง แต่ใน TypeScript เมื่อคุณเปลี่ยน type ตัวคอมไพเลอร์จะแสดงรายการบรรทัดที่พังทั้งหมดให้คุณเห็น สิ่งนี้ช่วยขจัดความกลัวในการเข้าไปแตะต้องโค้ดเก่า

Type ยังช่วยเพิ่มประสิทธิภาพในการทำงานร่วมกับ AI อีกด้วย

เมื่อคุณสั่งให้ AI แก้ไข JavaScript ที่ไม่มี type มันจะใช้วิธีการเดาโครงสร้าง ซึ่งอาจทำให้เกิดข้อผิดพลาดที่ลามไปถึง production ได้ แต่ใน TypeScript ตัว type จะทำหน้าที่เป็นข้อกำหนด (specification) ทำให้ AI รู้กฎเกณฑ์ต่างๆ หาก AI ทำพลาด ตัวคอมไพเลอร์จะตรวจพบได้ทันที Type จึงเปลี่ยน "โค้ดที่ดูเหมือนจะใช่" ให้กลายเป็น "โค้ดที่พิสูจน์แล้วว่าถูกต้อง"

Type ไม่ได้ทำให้คุณทำงานช้าลง ในเวิร์กโฟลว์ที่ใช้ AI พวกมันกลับช่วยให้คุณทำงานเร็วขึ้น โดยทำหน้าที่เป็นราวกันตก (guardrails) ที่ช่วยให้คุณมั่นใจในโค้ดที่ถูกสร้างขึ้นมาได้ โดยไม่ต้องไล่ตรวจสอบทุกบรรทัดด้วยตัวเอง

เขียน type ด้วยความตั้งใจ:

• ใช้ unions แทนการใช้ boolean หลายตัว ตัวอย่างเช่น สถานะอย่าง "loading" | "error" | "ready" จะช่วยป้องกันสถานะที่เป็นไปไม่ได้ (impossible states) • ตั้งชื่อ domain types ของคุณ การใช้ "type Cents = number" จะช่วยให้ความตั้งใจของคุณชัดเจนขึ้น • หลีกเลี่ยง "any" ให้ใช้ "unknown" และทำการ narrow type แทน เพราะ "any" จะทำลายตาข่ายความปลอดภัยของคุณทิ้งไป • ปล่อยให้การทำ inference ทำงานของมัน คุณไม่จำเป็นต้องระบุ type ให้กับทุกอย่าง แค่ระบุที่ function signatures และ exported APIs ก็พอ แล้วปล่อยให้ส่วนที่เหลือไหลไปตามระบบ

TypeScript เปลี่ยน codebase ให้กลายเป็นชุดของสัญญา (contracts) ที่ถูกบังคับใช้ สัญญาเหล่านี้ช่วยให้การ refactoring เป็นไปอย่างไม่ต้องเกรงกลัว และช่วยให้การทำงานร่วมกับ AI มีความน่าเชื่อถือ

เราเริ่มใช้ type เพื่อหยุดยั้งบั๊ก แต่เรายังคงใช้มันต่อไปเพราะมันคือรากฐานของทุกสิ่งทุกอย่าง

Source: https://dev.to/parsajiravand/typescript-won-heres-what-that-actually-bought-us-12m8