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

null, undefined และการตรวจสอบค่า null อย่างเข้มงวด

จัดการ null และ undefined อย่างปลอดภัยด้วยโหมดเข้มงวด

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

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

ใน JavaScript ค่า null และ undefined เป็นแหล่งที่มาของข้อผิดพลาดขณะทำงานที่พบบ่อย การตรวจสอบค่าว่างแบบเข้มงวดของ TypeScript บังคับให้คุณจัดการค่าเหล่านี้อย่างชัดเจน

ค่าว่างเทียบกับค่าที่ยังไม่ได้กำหนด

`undefined` หมายถึงตัวแปรถูกประกาศแล้วแต่ยังไม่ได้กำหนดค่า ส่วน `null` หมายถึงการไม่มีค่าโดยเจตนา ทั้งสองเป็นชนิดที่แยกจากกันใน TypeScript
let a: undefined = undefined;
let b: null = null;

เมื่อไม่มีการตรวจสอบค่าว่างแบบเข้มงวด

หากไม่มี `strictNullChecks` ค่า null และ undefined จะเป็นชนิดย่อยของทุกชนิด นี่เป็นค่าเริ่มต้นใน TypeScript รุ่นเก่าและโดยทั่วไปไม่ปลอดภัย
// strictNullChecks: false (unsafe default)
let name: string = null; // allowed — dangerous!

การเปิดใช้การตรวจสอบค่าว่างแบบเข้มงวด

เมื่อใช้ `strictNullChecks: true` ซึ่งรวมอยู่ใน `strict` ค่า null และ undefined จะสามารถกำหนดให้ได้เฉพาะชนิดของตนเองหรือชนิดสหภาพที่ระบุไว้อย่างชัดเจนเท่านั้น
// strictNullChecks: true
let name: string = null; // Error!
let maybeName: string | null = null; // OK

คุณสมบัติที่เลือกได้

คุณสมบัติของอ็อบเจกต์ที่ทำเครื่องหมายด้วย `?` จะเทียบเท่ากับ `T | undefined` โดยปริยาย คุณต้องจัดการกรณีที่ไม่มีคุณสมบัติเหล่านี้ด้วย
interface Config {
  host: string;
  port?: number; // number | undefined
}

const c: Config = { host: 'localhost' };
console.log(c.port?.toString()); // optional chaining

การจำกัดชนิดที่อาจเป็นค่าว่างให้แคบลง

ใช้การตรวจสอบด้วย if เพื่อจำกัดชนิดสหภาพที่มี null หรือ undefined ให้แคบลงก่อนเข้าถึงคุณสมบัติ
function greet(name: string | null): string {
  if (name === null) return 'Guest';
  return 'Hello, ' + name;
}

การเชื่อมต่อแบบเลือกได้ (?.)

ตัวดำเนินการ `?.` จะหยุดการทำงานและคืนค่า `undefined` หากด้านซ้ายเป็น null หรือ undefined จึงช่วยหลีกเลี่ยงการหยุดทำงานขณะรัน
const user = getUser();
const city = user?.address?.city; // undefined if any step is null

การรวมค่าเมื่อว่างเปล่า (??)

ตัวดำเนินการ `??` จะคืนค่าด้านขวาเฉพาะเมื่อด้านซ้ายเป็น null หรือ undefined ต่างจาก `||` ที่ทำงานเมื่อพบค่าใด ๆ ที่เป็นเท็จ
const port = config.port ?? 3000; // 3000 if port is null/undefined
const label = name ?? 'Anonymous';

ตัวดำเนินการยืนยันว่าไม่เป็นค่าว่าง (!)

ตัวดำเนินการต่อท้าย `!` บอก TypeScript ว่าคุณมั่นใจว่าค่าไม่ใช่ null หรือ undefined ควรใช้ตัวดำเนินการนี้เมื่อมั่นใจอย่างยิ่งเท่านั้น
const el = document.getElementById('root')!;
el.textContent = 'Loaded'; // no null check needed

การคืนค่า null เทียบกับ undefined

ควรคืนค่า `null` เพื่อสื่อถึงผลลัพธ์ว่างโดยเจตนา และคืนค่า `undefined` สำหรับค่าที่หายไปหรือค่าที่เลือกได้ ควรใช้แนวทางเดียวกันทั่วทั้งฐานโค้ด
function findUser(id: number): User | null {
  return db.find(u => u.id === id) ?? null;
}

strictNullChecks ป้องกันข้อผิดพลาดมูลค่าพันล้านดอลลาร์

Tony Hoare เรียก null ว่าเป็น “ข้อผิดพลาดมูลค่าพันล้านดอลลาร์” strictNullChecks ของ TypeScript ป้องกันการหยุดทำงานจาก null/undefined ด้วยการบังคับให้คุณจัดการค่าเหล่านี้อย่างชัดเจน

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

ตัวดำเนินการ `??` หรือการรวมค่าเมื่อว่างเปล่า จะคืนค่าอะไรจากด้านขวา

สรุปทบทวน

เปิดใช้ strictNullChecks เพื่อป้องกันข้อผิดพลาดจาก null/undefined ใช้ชนิดสหภาพเพื่อรองรับค่าที่อาจเป็นค่าว่าง ใช้การเชื่อมต่อแบบเลือกได้ (?.) เพื่อเข้าถึงข้อมูลต่อเนื่องอย่างปลอดภัย และใช้การรวมค่าเมื่อว่างเปล่า (??) เพื่อกำหนดค่าเริ่มต้น

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

บทเรียน “null, undefined และการตรวจสอบค่า null อย่างเข้มงวด” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “null, undefined และการตรวจสอบค่า null อย่างเข้มงวด”

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

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

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

บทเรียน “null, undefined และการตรวจสอบค่า null อย่างเข้มงวด” ใช้เวลานานแค่ไหน

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

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

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

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

  1. ชนิดข้อมูลพื้นฐาน: string, number, boolean
  2. ชนิด any และเหตุผลที่ควรหลีกเลี่ยง
  3. unknown เทียบกับ any: ตัวเลือกที่ปลอดภัยกว่า
  4. null, undefined และการตรวจสอบค่า null อย่างเข้มงวด
← กลับไปที่ TypeScript Academy