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

พารามิเตอร์เสริมและค่าเริ่มต้น

จัดการอาร์กิวเมนต์ที่หายไปด้วย ? และค่าเริ่มต้น

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

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

TypeScript ช่วยให้คุณทำเครื่องหมายพารามิเตอร์ของฟังก์ชันเป็นแบบไม่บังคับด้วย `?` หรือกำหนดค่าเริ่มต้นให้พารามิเตอร์ได้ ทำให้ส่วนเชื่อมต่อการใช้งานยืดหยุ่นและยังคงปลอดภัยด้านชนิด

พารามิเตอร์แบบไม่บังคับด้วย ?

เพิ่ม `?` หลังชื่อพารามิเตอร์เพื่อทำให้เป็นพารามิเตอร์แบบไม่บังคับ ชนิดของพารามิเตอร์จะกลายเป็น T | undefined ภายในฟังก์ชัน
function greet(name: string, greeting?: string): string {
  return (greeting ?? 'Hello') + ', ' + name;
}

ค่าเริ่มต้นของพารามิเตอร์

กำหนดค่าเริ่มต้นด้วย `=` TypeScript จะอนุมานชนิดจากค่าเริ่มต้น และพารามิเตอร์จะเป็นแบบไม่บังคับตรงจุดเรียกใช้
function greet(name: string, greeting: string = 'Hello'): string {
  return greeting + ', ' + name;
}
greet('Alice');         // 'Hello, Alice'
greet('Bob', 'Hi');    // 'Hi, Bob'

แบบไม่บังคับเทียบกับแบบมีค่าเริ่มต้น

`?` แบบไม่บังคับจะให้ค่า undefined เมื่อไม่ระบุค่า ส่วนค่าเริ่มต้นจะแทนที่ undefined ด้วยค่าทดแทน ทั้งสองแบบทำให้ไม่จำเป็นต้องระบุพารามิเตอร์ตรงจุดเรียกใช้
function opt(x?: number) { return x; }     // x: number | undefined
function def(x: number = 0) { return x; }  // x: number

กฎการจัดวาง

พารามิเตอร์แบบไม่บังคับและพารามิเตอร์ที่มีค่าเริ่มต้นต้องอยู่หลังพารามิเตอร์ที่จำเป็นในลายเซ็นฟังก์ชัน
// Correct order
function create(name: string, role: string = 'user', active?: boolean) {}

// Error: required after optional
// function bad(x?: string, y: string) {}

การเรียกใช้โดยระบุ undefined อย่างชัดเจน

คุณสามารถส่ง `undefined` ให้พารามิเตอร์ที่มีค่าเริ่มต้น เพื่อเรียกใช้ค่าเริ่มต้นนั้น
function log(msg: string, level: string = 'info') { console.log(level, msg); }
log('test', undefined); // level is 'info'

พารามิเตอร์แบบไม่บังคับและโอเวอร์โหลด

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

พารามิเตอร์ออบเจ็กต์ที่มีค่าเริ่มต้น

คุณสามารถแยกโครงสร้างพารามิเตอร์ออบเจ็กต์ พร้อมกำหนดค่าเริ่มต้นให้แต่ละพร็อพเพอร์ตีได้
function connect({ host = 'localhost', port = 5432 } = {}) {
  return `${host}:${port}`;
}

พารามิเตอร์อาร์เรย์ที่มีค่าเริ่มต้น

พารามิเตอร์อาร์เรย์ที่มีค่าเริ่มต้นทำงานในลักษณะเดียวกัน ให้ระบุอาร์เรย์ว่างเป็นค่าเริ่มต้นเพื่อหลีกเลี่ยงการตรวจสอบ undefined
function joinAll(parts: string[], sep: string = ', '): string {
  return parts.join(sep);
}

การเชื่อมโยงแบบไม่บังคับตรงจุดเรียกใช้

หากการอ้างอิงฟังก์ชันเองเป็นแบบไม่บังคับ ให้ใช้การเชื่อมโยงแบบไม่บังคับ `?.()` เพื่อเรียกใช้ฟังก์ชันเฉพาะเมื่อฟังก์ชันนั้นมีอยู่
interface Config { onReady?: () => void; }
function init(config: Config) {
  config.onReady?.();
}

ชนิดของพารามิเตอร์แบบไม่บังคับภายในฟังก์ชัน

ภายในฟังก์ชัน พารามิเตอร์แบบไม่บังคับ `x?: T` จะมีชนิดเป็น `T | undefined` คุณต้องจำกัดชนิดของพารามิเตอร์ก่อนนำไปใช้เป็น T
function process(id?: number) {
  if (id === undefined) return;
  console.log(id * 2); // id is number here
}

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

ชนิดของพารามิเตอร์ที่ประกาศเป็น `count?: number` ภายในส่วนเนื้อหาฟังก์ชันคืออะไร

สรุปทบทวน

ใช้ `?` สำหรับพารามิเตอร์แบบไม่บังคับ และใช้ `= value` สำหรับค่าเริ่มต้น พารามิเตอร์แบบไม่บังคับจะมีชนิดเป็น T | undefined ภายในฟังก์ชัน ค่าเริ่มต้นจะแทนที่ undefined โดยอัตโนมัติ ทั้งสองแบบต้องอยู่หลังพารามิเตอร์ที่จำเป็น

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

บทเรียน “พารามิเตอร์เสริมและค่าเริ่มต้น” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “พารามิเตอร์เสริมและค่าเริ่มต้น”

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

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

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

บทเรียน “พารามิเตอร์เสริมและค่าเริ่มต้น” ใช้เวลานานแค่ไหน

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

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

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

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

  1. คำอธิบายชนิดของพารามิเตอร์และค่าที่ส่งกลับ
  2. พารามิเตอร์เสริมและค่าเริ่มต้น
  3. พารามิเตอร์ส่วนที่เหลือและการกระจายพร้อมชนิด
  4. void, never และลายเซ็นฟังก์ชัน
← กลับไปที่ TypeScript Academy