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

Foundations & Mental Model

TypeScript คือ JavaScript บวกกับ static type system ที่ทำงานตอน compile time และหายไปตอน runtime ไม่เปลี่ยนสิ่งที่ code ของคุณ ทำ — แต่เปลี่ยนสิ่งที่ compiler ยอมให้คุณเขียน จับ bug ทั้งกลุ่มได้ก่อนที่ code จะรันเสียอีก

ทุกอย่างขั้นสูงในคอร์สนี้ — generics, conditional types, mapped types — คือ system เดียวกันนี้ที่ถูกต่อยอดไปจนสุดทาง เข้าใจ mental model ให้ถูก แล้วที่เหลือจะตามมาเอง

บทเรียนสิ่งที่คุณจะได้เรียน
Why TypeScripttype ให้อะไรกับเรา และเส้นแบ่ง compile-time / runtime
The type-system mindsettype คือ เซตของ value — mental model ที่มีประโยชน์ที่สุด
Structural typingทำไม TypeScript สนใจ shape ไม่ใช่ชื่อ
Type inferencecompiler เดา type ที่คุณไม่ได้เขียนออกมาได้อย่างไร

สองไอเดียนี้ พอเอามารวมกัน อธิบายพฤติกรรมของ TypeScript ได้แทบทุกอย่างที่คุณจะเจอ:

flowchart TB
  sets["Type คือ เซต ของ value
(number = ทุกจำนวน)"] --> assign["Assignability =
ความสัมพันธ์แบบ subset"]
  struct["Typing เป็นแบบ STRUCTURAL
(ดูที่ shape ไม่ใช่ชื่อ)"] --> compat["Compatibility =
shape เข้ากันได้ไหม"]
  assign --> ts["ทุกพฤติกรรมของ TS"]
  compat --> ts
สองไอเดียที่ทุกอย่างสร้างต่อยอดขึ้นมา

เวลาที่การ assign ผ่านได้ เป็นเพราะเซตของ value ของ type หนึ่งพอดีอยู่ในอีก type หนึ่ง เวลาที่ object สองตัวใช้แทนกันได้ เป็นเพราะ shape ของตัวเองตรงกัน จำสองไอเดียนี้ไว้ แล้ว TypeScript จะเลิกทำให้คุณประหลาดใจ

type system ของ TypeScript ทำงานตอนไหน?
mental model ที่มีประโยชน์ที่สุดสำหรับ type ของ TypeScript คืออะไร?
สองไอเดียใดที่อธิบายพฤติกรรมของ TypeScript ได้เกือบทั้งหมด?