ตรวจสอบความครอบคลุมทุกกรณีด้วย never
ใช้ never เพื่อให้แน่ใจว่าจัดการทุกกรณีของยูเนียนแล้ว
ตรวจสอบความครอบคลุมทุกกรณีด้วย never เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
ยินดีต้อนรับ
ปัญหาการตรวจสอบความครบถ้วน
type Shape = 'circle' | 'square';
function area(s: Shape): number {
if (s === 'circle') return 3.14;
if (s === 'square') return 1;
// What if we add 'triangle'?
}รูปแบบตรวจสอบความครบถ้วนด้วยชนิดที่เป็นไปไม่ได้
function assertNever(x: never): never {
throw new Error('Unexpected value: ' + x);
}
function area(s: Shape): number {
switch (s) {
case 'circle': return 3.14;
case 'square': return 1;
default: return assertNever(s);
}
}การเพิ่มสมาชิกชนิดยูเนียนใหม่
type Shape = 'circle' | 'square' | 'triangle';
// Now TypeScript errors on assertNever(s) because s is 'triangle'
// — it's not never!การตรวจสอบชนิดที่เป็นไปไม่ได้แบบแทรกในบรรทัด
function handle(shape: Shape): string {
switch (shape.kind) {
case 'circle': return 'circle';
case 'square': return 'square';
default:
const _: never = shape; // Error if not exhaustive
throw new Error('Unknown shape');
}
}การตรวจสอบความครบถ้วนโดยไม่ใช้คำสั่งสลับกรณี
function process(action: Action): void {
if (action.type === 'A') { /* ... */ }
else if (action.type === 'B') { /* ... */ }
else {
const _: never = action; // exhaustive
}
}ชนิดที่เป็นไปไม่ได้ในข้อจำกัดชนิดทั่วไป
type NonNullable<T> = T extends null | undefined ? never : T;
// Removes null and undefined from Tการใช้ชนิดที่เป็นไปไม่ได้แทนสถานะที่เป็นไปไม่ได้
type State<T> =
| { kind: 'loading' }
| { kind: 'success'; data: T }
| { kind: 'error'; msg: string };
// There should never be a state with kind: 'unknown'ชนิดที่เป็นไปไม่ได้ในชนิดแบบมีเงื่อนไข
type NonFunctions<T> = {
[K in keyof T]: T[K] extends Function ? never : K
}[keyof T];
// Returns keys whose values are not functionsชนิดที่เป็นไปไม่ได้ส่งต่อผ่านยูเนียน
type T = string | never; // string
type U = never | number | never; // numberตัวช่วย assertNever
function assertNever(value: never, message?: string): never {
throw new Error(message ?? `Unhandled: ${JSON.stringify(value)}`);
}ตรวจสอบอย่างรวดเร็ว
สรุปทบทวน
คำถามที่พบบ่อย
บทเรียน “ตรวจสอบความครอบคลุมทุกกรณีด้วย never” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตรวจสอบความครอบคลุมทุกกรณีด้วย never” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตรวจสอบความครอบคลุมทุกกรณีด้วย never”
ใช้ never เพื่อให้แน่ใจว่าจัดการทุกกรณีของยูเนียนแล้ว คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ตรวจสอบความครอบคลุมทุกกรณีด้วย never” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม
ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การทำชนิดให้แคบลงด้วย typeof และค่าความจริง
- การทำชนิดให้แคบลงด้วย instanceof และ in
- ฟังก์ชันตรวจสอบชนิดที่ผู้ใช้กำหนด
- ตรวจสอบความครอบคลุมทุกกรณีด้วย never