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

ชนิดข้อมูลแบบมีเงื่อนไข (เบื้องต้น) และการกระจายบนยูเนียน

เรียนรู้ชนิดข้อมูลแบบมีเงื่อนไข (T extends U ? X : Y) และดูว่าชนิดข้อมูลเหล่านี้กระจายบนยูเนียนเพื่อสร้างตรรกะระดับชนิดข้อมูลที่ทรงพลังได้อย่างไร

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

บทนำ

เป้าหมาย: ใช้ชนิดแบบมีเงื่อนไข (T extends U ? X : Y) เพื่อแยกแขนงในระดับชนิด และทำความเข้าใจการกระจายเหนือยูเนียนเพื่อให้ได้ผลลัพธ์ที่แม่นยำ

เงื่อนไขพื้นฐาน

ชนิดแบบมีเงื่อนไขจะส่งคืนหนึ่งในสองชนิด โดยพิจารณาว่า T extends U เป็นจริงหรือไม่

type IsString<T> = T extends string ? true : false;

let a: IsString<string>;   // true
let b: IsString<number>;   // false

การกระจาย

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

type ToArray<T> = T extends any ? T[] : never;

type R1 = ToArray<string | number>; // string[] | number[]

หยุดการกระจาย

ห่อ T ไว้ในทูเพิล เช่น [T] เพื่อหยุดการกระจายและปฏิบัติต่อยูเนียนเป็นหนึ่งชุด

type ToArrayNoDistrib<T> = [T] extends [any] ? T[] : never;

type R2 = ToArrayNoDistrib<string | number>; // (string | number)[]

การยกเว้นเชิงปฏิบัติ

ชนิดเครื่องมือจำนวนมากอาศัยการกระจาย เช่น Exclude และ Extract คุณสามารถสร้างรูปแบบของตนเองได้อย่างง่ายดาย

type MyExclude<T, U> = T extends U ? never : T;

type R3 = MyExclude<"a" | "b" | "c", "b">; // "a" | "c"

เคล็ดลับ

เคล็ดลับ:

  • การกระจายจะเกิดขึ้นเฉพาะเมื่อพารามิเตอร์ชนิดอยู่ด้านซ้ายของ extends และเป็นแบบไม่ห่อหุ้ม
  • ห่อไว้ในทูเพิลเพื่อปิดการกระจาย
  • ทดสอบด้วยตัวอย่างขนาดเล็กเพื่อยืนยันความเข้าใจ

ตรวจสอบการกระจาย

ตรวจสอบอย่างรวดเร็ว: เหตุใดชนิดแบบมีเงื่อนไขจึงกระจายเหนือยูเนียน

สรุปทบทวน

สรุปทบทวน: ใช้ชนิดแบบมีเงื่อนไขสำหรับการแยกแขนงในระดับชนิด ทำความเข้าใจว่าเมื่อใดผลลัพธ์จะกระจายเหนือยูเนียน และวิธีปิดการกระจายด้วยการห่อในทูเพิล

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

บทเรียน “ชนิดข้อมูลแบบมีเงื่อนไข (เบื้องต้น) และการกระจายบนยูเนียน” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ชนิดข้อมูลแบบมีเงื่อนไข (เบื้องต้น) และการกระจายบนยูเนียน”

เรียนรู้ชนิดข้อมูลแบบมีเงื่อนไข (T extends U ? X : Y) และดูว่าชนิดข้อมูลเหล่านี้กระจายบนยูเนียนเพื่อสร้างตรรกะระดับชนิดข้อมูลที่ทรงพลังได้อย่างไร คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “ชนิดข้อมูลแบบมีเงื่อนไข (เบื้องต้น) และการกระจายบนยูเนียน” ใช้เวลานานแค่ไหน

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

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

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

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

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