ข้ามไปยังเนื้อหา

Practical Mastery

ตอนนี้คุณรู้แล้วว่า type system ทำงานอย่างไร โมดูลนี้ว่าด้วยการใช้ type system ให้ดี — คือ judgment ที่แยกคนที่ผ่าน compiler ได้ ออกจากคนที่ ship TypeScript ที่ maintain ได้จริง

แกนหลักคือความจริงที่ไม่ค่อยสบายใจนัก: compiler รู้แค่สิ่งที่คุณบอกเท่านั้น type คือ model ของโปรแกรมคุณ และ model ผิดได้ ทั้ง any, cast ที่ผิด หรือ JSON blob จาก network ล้วนโกหก checker ได้ ความเชี่ยวชาญคือการรู้ว่า model เจอกับความจริงตรงไหน แล้วปกป้อง boundary นั้น

บทเรียนสิ่งที่คุณจะได้เรียนรู้
Typing APIs & boundariesunknown vs any, validate ข้อมูลจากภายนอก, branded type
Nullability & neverstrictNullChecks, 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)"]
เกาะที่มี type ในทะเลที่ไม่มี type

ทุกอย่างในนี้เป็นรูปแบบหนึ่งของ validate at the edge, trust inside ผลักความไม่แน่นอนไปไว้ที่ boundary ของโปรแกรม เปลี่ยนให้เป็น type จริงตรงนั้น แล้วปล่อยให้ทั้งภายในได้รับการการันตี ทำ boundary ให้ถูก แล้ว type system จะตอบแทนคุณในทุกที่ที่เหลือ

ความจริงหลักของโมดูลนี้คืออะไร?
กลยุทธ์ที่วนกลับมาเสมอสำหรับจัดการโลกที่ไม่มี type คืออะไร?
project compile ผ่านโดยไม่มี error เลย การันตีอะไร?