TypeScript Academy · Pelajaran

Parameter Rest dalam Fungsi

Tentukan jenis fungsi yang menerima sejumlah argumen berapa pun.

Pelajaran 1 dari 413 langkah

Parameter Rest dalam Fungsi adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 4 pelajaran total.

Fungsi dengan Banyak Argumen

Parameter sisa memungkinkan fungsi menerima jumlah argumen berapa pun, yang dikumpulkan ke dalam satu larik. TypeScript menentukan tipe larik tersebut sehingga Anda tetap mendapatkan keamanan meskipun pemanggilan memiliki panjang yang bervariasi.

Parameter Sisa Dasar

Tambahkan awalan ... pada parameter terakhir dan berikan tipe larik. Di dalam fungsi, parameter tersebut berperilaku seperti larik biasa.

function sum(...nums: number[]): number {
  return nums.reduce((a, b) => a + b, 0)
}
console.log(sum(1, 2, 3, 4)) // 10

Memanggil Tanpa Argumen

Parameter sisa dapat menerima nol argumen — lariknya cukup kosong. Tidak diperlukan penanganan khusus untuk kasus tanpa argumen.

function sum(...nums: number[]): number {
  return nums.reduce((a, b) => a + b, 0)
}
console.log(sum()) // 0

Sisa Setelah Parameter Tetap

Parameter sisa dapat mengikuti parameter tetap, tetapi harus menjadi parameter terakhir. Parameter tetap diikat terlebih dahulu; semua yang tersisa masuk ke larik sisa.

function join(separator: string, ...parts: string[]): string {
  return parts.join(separator)
}
console.log(join("-", "a", "b", "c")) // a-b-c

Hanya Satu Sisa, Selalu Terakhir

Anda boleh memiliki paling banyak satu parameter sisa, dan tidak ada parameter yang dapat mengikutinya. Menempatkan parameter setelah sisa merupakan galat sintaks.

// function bad(...nums: number[], last: number) {} // Error
function ok(first: number, ...rest: number[]) {
  return first + rest.length
}
console.log(ok(10, 1, 2)) // 12

Batasan Tipe Elemen

Tipe elemen larik sisa membatasi setiap argumen. Pengiriman tipe yang salah akan terdeteksi pada waktu kompilasi.

function tags(...labels: string[]): string {
  return labels.join(",")
}
console.log(tags("a", "b"))
// tags("a", 5) // Error: 5 is not a string

Sisa dengan Tipe Gabungan

Tipe elemen dapat berupa gabungan, sehingga memungkinkan argumen dengan tipe yang beragam. Di dalam fungsi, tentukan tipe setiap item sebelum menggunakannya.

function show(...items: (string | number)[]): string {
  return items.map(String).join(" ")
}
console.log(show("x", 1, "y", 2)) // x 1 y 2

Sisa dengan Tipe Tupel

Parameter sisa dapat diberi tipe tupel untuk menjelaskan bentuk tetap lalu bervariasi. Di sini, argumen pertama berupa string, diikuti sejumlah angka berapa pun.

function record(...args: [string, ...number[]]): string {
  const [label, ...values] = args
  return label + ": " + values.join(",")
}
console.log(record("scores", 9, 8, 7))

Sisa Tupel Memastikan Jumlah Argumen

Dengan tipe sisa tupel, elemen awal wajib ada. Menghilangkan argumen pertama yang wajib merupakan galat kompilasi — lebih ketat daripada larik biasa.

function record(...args: [string, ...number[]]): number {
  return args.length
}
console.log(record("x")) // 1
// record() // Error: missing string argument

Menyebarkan ke dalam Pemanggilan Sisa

Anda dapat meneruskan larik yang sudah ada ke parameter sisa dengan menggunakan penyebaran di lokasi pemanggilan. Tipe elemen larik harus sesuai dengan tipe parameter.

function sum(...nums: number[]): number {
  return nums.reduce((a, b) => a + b, 0)
}
const values = [1, 2, 3]
console.log(sum(...values)) // 6

Sisa dalam Praktik

Parameter sisa mendukung pembantu pencatatan, pemformat, dan utilitas matematika — apa pun yang menangani jumlah masukan yang bervariasi dengan tipe yang sama atau terstruktur.

function max(first: number, ...rest: number[]): number {
  return rest.reduce((m, n) => (n > m ? n : m), first)
}
console.log(max(3, 7, 2, 9, 1)) // 9

Pemeriksaan Cepat

Uji pemahaman Anda tentang parameter sisa bertipe.

Ringkasan

Parameter sisa menggunakan ... pada parameter terakhir untuk mengumpulkan argumen tambahan ke dalam larik bertipe. Parameter ini harus berada paling akhir dan hanya boleh ada satu. Berikan tipe berupa larik sederhana, larik gabungan, atau tupel untuk menyatakan bentuk tetap lalu bervariasi yang memastikan jumlah argumen. Sebarkan larik yang sudah ada di lokasi pemanggilan untuk memberikannya ke parameter sisa.

Gratis untuk memulai

Belajar TypeScript dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
101
Pelajaran
352

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Parameter Rest dalam Fungsi” gratis?

Ya — teks lengkap “Parameter Rest dalam Fungsi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Parameter Rest dalam Fungsi”?

Tentukan jenis fungsi yang menerima sejumlah argumen berapa pun. Kamu berlatih TypeScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai TypeScript Academy?

Tidak diperlukan pengalaman sebelumnya. TypeScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Parameter Rest dalam Fungsi” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran TypeScript Academy ini?

Ya. Setiap pelajaran TypeScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Parameter Rest dalam Fungsi
  2. Spread dalam Array dan Objek
  3. Elemen Rest Tuple
  4. Menentukan Jenis Fungsi Variadik
← Kembali ke TypeScript Academy