Practical Mastery
จุดที่ความรู้กลายเป็น judgment
หัวข้อที่มีชื่อว่า “จุดที่ความรู้กลายเป็น judgment”ตอนนี้คุณรู้แล้วว่า type system ทำงานอย่างไร โมดูลนี้ว่าด้วยการใช้ type system ให้ดี — คือ judgment ที่แยกคนที่ผ่าน compiler ได้ ออกจากคนที่ ship TypeScript ที่ maintain ได้จริง
แกนหลักคือความจริงที่ไม่ค่อยสบายใจนัก: compiler รู้แค่สิ่งที่คุณบอกเท่านั้น type คือ model ของโปรแกรมคุณ และ model ผิดได้ ทั้ง any, cast ที่ผิด หรือ JSON blob จาก network ล้วนโกหก checker ได้ ความเชี่ยวชาญคือการรู้ว่า model เจอกับความจริงตรงไหน แล้วปกป้อง boundary นั้น
โมดูลนี้ครอบคลุมอะไรบ้าง
หัวข้อที่มีชื่อว่า “โมดูลนี้ครอบคลุมอะไรบ้าง”| บทเรียน | สิ่งที่คุณจะได้เรียนรู้ |
|---|---|
| Typing APIs & boundaries | unknown vs any, validate ข้อมูลจากภายนอก, branded type |
| Nullability & never | strictNullChecks, Result type, exhaustiveness ด้วย never |
| Performance & pitfalls | ทำไม tsc ช้าลง, footgun ที่พบบ่อย, เมื่อไรควร simplify |
| Migration strategy | ย้าย JS codebase ไป TS โดยไม่ต้อง rewrite ทีเดียว |
แนวคิดเดียวที่ร้อยทุกอย่างเข้าด้วยกัน
หัวข้อที่มีชื่อว่า “แนวคิดเดียวที่ร้อยทุกอย่างเข้าด้วยกัน”flowchart LR world["untyped world network, JSON, any, casts"] -->|validate at the edge| edge["boundary (guards, schemas)"] edge -->|trusted types| inside["your typed code (safe to trust)"]
ทุกอย่างในนี้เป็นรูปแบบหนึ่งของ validate at the edge, trust inside ผลักความไม่แน่นอนไปไว้ที่ boundary ของโปรแกรม เปลี่ยนให้เป็น type จริงตรงนั้น แล้วปล่อยให้ทั้งภายในได้รับการการันตี ทำ boundary ให้ถูก แล้ว type system จะตอบแทนคุณในทุกที่ที่เหลือ