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

พารามิเตอร์ส่วนที่เหลือและการกระจายพร้อมชนิด

กำหนดชนิดให้พารามิเตอร์ส่วนที่เหลือและการดำเนินการกระจาย

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

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

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

การกำหนดชนิดให้พารามิเตอร์แบบรวบอาร์กิวเมนต์ที่เหลือ

ใช้รูปแบบ `...name: T[]` สำหรับพารามิเตอร์แบบรวบอาร์กิวเมนต์ที่เหลือ ซึ่งจะเก็บอาร์กิวเมนต์ที่เหลือทั้งหมดไว้เป็นอาร์เรย์
function sum(...nums: number[]): number {
  return nums.reduce((a, b) => a + b, 0);
}
console.log(sum(1, 2, 3, 4)); // 10

พารามิเตอร์แบบรวบอาร์กิวเมนต์ที่เหลือหลังพารามิเตอร์ที่จำเป็น

พารามิเตอร์แบบรวบอาร์กิวเมนต์ที่เหลือต้องอยู่ท้ายสุด พารามิเตอร์ที่จำเป็นอื่น ๆ ต้องอยู่ก่อนหน้า
function log(level: string, ...messages: string[]): void {
  console.log(level, messages.join(' '));
}
log('INFO', 'Server', 'started', 'on', 'port', '3000');

การกระจายอาร์เรย์ไปยังฟังก์ชัน

ใช้การกระจาย `...` เพื่อส่งสมาชิกของอาร์เรย์เป็นอาร์กิวเมนต์แยกกัน TypeScript จะตรวจสอบว่าชนิดที่กระจายตรงกับพารามิเตอร์
function add(a: number, b: number): number { return a + b; }
const args: [number, number] = [1, 2];
add(...args); // OK — tuple spread is type-safe

การกระจายอาร์เรย์ทั่วไป

การกระจายอาร์เรย์ทั่วไปไปยังฟังก์ชันที่มีจำนวนพารามิเตอร์คงที่อาจทำให้เกิดข้อผิดพลาด เพราะ TypeScript ตรวจสอบไม่ได้ว่าจำนวนสมาชิกตรงกัน
const nums = [1, 2]; // number[] — length unknown
// add(...nums); // Error: spread must match parameters
const pair: [number, number] = [1, 2];
add(...pair); // OK — tuple has known length

พารามิเตอร์แบบรวบอาร์กิวเมนต์ที่เหลือเทียบกับออบเจ็กต์ arguments

พารามิเตอร์แบบรวบอาร์กิวเมนต์ที่เหลือเข้ามาแทนที่ออบเจ็กต์ `arguments` แบบเดิม โดยเป็นอาร์เรย์จริงที่รองรับชนิดของ TypeScript อย่างครบถ้วน ต่างจาก `arguments`

การกระจายออบเจ็กต์ (ไม่ใช่พารามิเตอร์แบบรวบอาร์กิวเมนต์ที่เหลือ)

การกระจายออบเจ็กต์จะสร้างสำเนาแบบตื้น TypeScript จะอนุมานชนิดรวมของผลลัพธ์ที่เกิดจากการกระจาย
const a = { x: 1, y: 2 };
const b = { z: 3 };
const c = { ...a, ...b }; // { x: number; y: number; z: number }

การแทนที่พร็อพเพอร์ตีด้วยการกระจาย

เมื่อกระจายพร็อพเพอร์ตี พร็อพเพอร์ตีที่อยู่ภายหลังจะเขียนทับพร็อพเพอร์ตีก่อนหน้าที่มีชื่อเดียวกัน
const base = { color: 'red', size: 5 };
const updated = { ...base, color: 'blue' };
// { color: 'blue', size: 5 }

การกระจายอาร์เรย์ที่มีชนิด

การกระจายอาร์เรย์จะสร้างอาร์เรย์ใหม่ TypeScript จะอนุมานชนิดสมาชิกที่รวมกัน
const a: number[] = [1, 2];
const b: number[] = [3, 4];
const c: number[] = [...a, ...b]; // [1, 2, 3, 4]

ส่วนที่เหลือของทูเพิลแบบจำนวนสมาชิกแปรผัน

TypeScript รองรับสมาชิกส่วนที่เหลือในชนิดทูเพิลสำหรับรูปแบบที่มีจำนวนสมาชิกแปรผันขั้นสูง
type Strings = string[];
type StringsAndNumber = [...Strings, number];
const t: StringsAndNumber = ['a', 'b', 42];

ส่วนที่เหลือในการแยกโครงสร้าง

ใช้รูปแบบส่วนที่เหลือในการแยกโครงสร้าง เพื่อรวบรวมสมาชิกที่เหลือไว้ในอาร์เรย์ที่มีชนิด
const [first, ...rest]: number[] = [1, 2, 3, 4];
// first: number, rest: number[]

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

TypeScript อนุมานชนิดใดให้กับพารามิเตอร์ส่วนที่เหลือ `...items` ใน `function collect(...items: string[])`

สรุปทบทวน

พารามิเตอร์แบบรวบอาร์กิวเมนต์ที่เหลือ (`...args: T[]`) จะรวบรวมอาร์กิวเมนต์ที่เหลือเป็นอาร์เรย์ที่มีชนิด กระจายอาร์เรย์ไปยังฟังก์ชันโดยใช้ทูเพิลเพื่อความปลอดภัยด้านชนิด กระจายออบเจ็กต์เพื่อสร้างสำเนาแบบตื้นที่มีชนิดรวมซึ่งอนุมานโดยอัตโนมัติ

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

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

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

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

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

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

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

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

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

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

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

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

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