0Pricing
TypeScript Academy · บทเรียน

นามแฝงชนิดสำหรับชนิดที่ซับซ้อน

สร้างชื่อชนิดที่นำกลับมาใช้ซ้ำได้ด้วยคีย์เวิร์ด type

นามแฝงชนิดสำหรับชนิดที่ซับซ้อน เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

นามแฝงชนิดตั้งชื่อให้กับนิพจน์ชนิดใดก็ได้ ไม่ว่าจะเป็นชนิดพื้นฐาน ยูเนียน อินเตอร์เซกชัน ทูเพิล หรือออบเจ็กต์ ช่วยให้ชนิดซับซ้อนนำกลับมาใช้ใหม่และอ่านเข้าใจง่าย

คีย์เวิร์ด type

สร้างนามแฝงชนิดด้วย `type Name = TypeExpression` และสามารถใช้ได้ทุกที่ที่ใช้ชนิดเดิม
type UserId = number;
type UserName = string;
type Point = { x: number; y: number };

การตั้งนามแฝงให้ชนิดยูเนียน

ตั้งชื่อชนิดยูเนียนที่ซับซ้อนเพื่อให้ลายเซ็นฟังก์ชันอ่านเข้าใจง่ายขึ้น
type StringOrNumber = string | number;
function format(val: StringOrNumber): string {
  return String(val);
}

การตั้งนามแฝงให้ชนิดออบเจ็กต์

นามแฝงชนิดออบเจ็กต์ทำงานเหมือนอินเทอร์เฟซในการอธิบายรูปแบบของออบเจ็กต์
type Product = {
  id: number;
  name: string;
  price: number;
};
const p: Product = { id: 1, name: 'Widget', price: 9.99 };

การตั้งนามแฝงให้ชนิดทูเพิล

ตั้งชื่อรูปแบบทูเพิลที่ใช้บ่อย เพื่อไม่ต้องเขียนโครงสร้างเดิมซ้ำในทุกที่
type Coordinate = [number, number];
type RGB = [number, number, number];
const pos: Coordinate = [10, 20];

การตั้งนามแฝงให้ชนิดฟังก์ชัน

ตั้งชื่อลายเซ็นชนิดฟังก์ชัน เพื่อให้รายการพารามิเตอร์กระชับและอ่านง่าย
type Comparator<T> = (a: T, b: T) => number;
const numSort: Comparator<number> = (a, b) => a - b;

นามแฝงชนิดใช้ชนิดทั่วไปได้

เช่นเดียวกับอินเทอร์เฟซ นามแฝงชนิดรองรับพารามิเตอร์ชนิดทั่วไป
type Maybe<T> = T | null | undefined;
type Pair<A, B> = { first: A; second: B };

นามแฝงชนิดที่อ้างอิงตัวเอง

นามแฝงชนิดสามารถอ้างอิงตัวเองเพื่อสร้างโครงสร้างข้อมูลแบบเรียกซ้ำ เช่น ต้นไม้และรายการเชื่อมโยง
type TreeNode = {
  value: number;
  left?: TreeNode;
  right?: TreeNode;
};

นามแฝงชนิดไม่สามารถเปิดนิยามซ้ำได้

ต่างจากอินเทอร์เฟซ นามแฝงชนิดข้อมูลไม่สามารถขยายด้วยการประกาศเพิ่มเติมหลังจากนิยามแล้วได้ แต่จะคงที่
// Interface can be merged (declaration merging):
interface A { x: number; }
interface A { y: number; } // OK — A now has x and y

// Type alias cannot:
type B = { x: number };
// type B = { y: number }; // Error: duplicate identifier

ยูเนียนแบบจำแนกด้วยนามแฝงชนิดข้อมูล

นามแฝงชนิดข้อมูลเหมาะอย่างยิ่งสำหรับยูเนียนแบบจำแนก ซึ่งเป็นรูปแบบที่รวมชนิดข้อมูลยูเนียนเข้ากับพร็อพเพอร์ตีลิเทอรัลที่ใช้ร่วมกัน
type Success = { kind: 'success'; data: string };
type Failure = { kind: 'failure'; error: Error };
type Result = Success | Failure;

เมื่อใดควรเลือกใช้ type แทน interface

ใช้ `type` สำหรับยูเนียน ทูเพิล ลายเซ็นฟังก์ชัน และเมื่อจำเป็นต้องสร้างชนิดข้อมูลที่คำนวณซับซ้อน ใช้ `interface` สำหรับโครงสร้างออบเจ็กต์ที่อาจขยายหรือนำไปใช้งานได้

ตรวจสอบอย่างรวดเร็ว

คุณลักษณะใดที่ `interface` รองรับ แต่ `type` ไม่รองรับ

สรุปทบทวน

นามแฝงชนิดข้อมูลสามารถตั้งชื่อให้กับนิพจน์ชนิดข้อมูลใดก็ได้ ซึ่งรวมถึงยูเนียน ทูเพิล ออบเจ็กต์ และฟังก์ชัน นอกจากนี้ยังรองรับเจเนอริกและการอ้างอิงตัวเอง ต่างจากอินเทอร์เฟซตรงที่ไม่สามารถเปิดกลับมาเพิ่มการประกาศหลังจากนิยามแล้วได้

คำถามที่พบบ่อย

บทเรียน “นามแฝงชนิดสำหรับชนิดที่ซับซ้อน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “นามแฝงชนิดสำหรับชนิดที่ซับซ้อน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “นามแฝงชนิดสำหรับชนิดที่ซับซ้อน”

สร้างชื่อชนิดที่นำกลับมาใช้ซ้ำได้ด้วยคีย์เวิร์ด type คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “นามแฝงชนิดสำหรับชนิดที่ซับซ้อน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม

ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. กำหนดโครงสร้างออบเจ็กต์ด้วยอินเทอร์เฟซ
  2. นามแฝงชนิดสำหรับชนิดที่ซับซ้อน
  3. การขยายและรวมอินเทอร์เฟซ
  4. อินเทอร์เฟซกับ type: ควรใช้แบบใด
← กลับไปที่ TypeScript Academy