Rest Parameter
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah halaman ini, kamu dapat membuat function yang menerima jumlah argument tidak terbatas menggunakan sintaks ....
Pendahuluan
Section titled “Pendahuluan”Bagaimana jika kamu tidak tahu sebelumnya berapa angka yang akan dijumlahkan? Mungkin 3, mungkin 10, mungkin 50. Rest parameter menyelesaikan masalah ini.
Sintaks
Section titled “Sintaks”function namaFunction(...angka: number[]): number { // angka adalah array berisi semua argument yang dikirim}Analogi
Section titled “Analogi”Troli Belanja
Section titled “Troli Belanja”Troli bisa menampung berapapun barang yang kamu masukkan. Kamu tidak perlu memberitahu kasir sebelumnya berapa item yang akan dibeli.
Troli: [...barang1, barang2, barang3, barang4, ...] ▲ bisa berapa sajaMari Mencoba
Section titled “Mari Mencoba”Buat src/bab4/rest-parameter.ts:
function jumlahkan(...angka: number[]): number { let total = 0 for (const n of angka) { total += n } return total}
function cetakSemua(...pesan: string[]): void { for (const p of pesan) { console.log(`• ${p}`) }}
function nilaiMaksimum(...nilai: number[]): number { let max = nilai[0] for (const n of nilai) { if (n > max) max = n } return max}
// Jumlah dengan berbagai jumlah argumenconsole.log(jumlahkan(1, 2, 3)) // 6console.log(jumlahkan(10, 20, 30, 40, 50)) // 150console.log(jumlahkan(5)) // 5
// Cetak banyak pesanconsole.log("\nDaftar kegiatan:")cetakSemua("Belajar TypeScript", "Mengerjakan latihan", "Istirahat", "Review materi")
// Nilai maksimum dari banyak angkaconsole.log(`\nNilai tertinggi: ${nilaiMaksimum(88, 92, 75, 67, 95, 80)}`)Jalankan:
tsx src/bab4/rest-parameter.tsOutput
Section titled “Output”61505
Daftar kegiatan:• Belajar TypeScript• Mengerjakan latihan• Istirahat• Review materi
Nilai tertinggi: 95Penjelasan Baris per Baris
Section titled “Penjelasan Baris per Baris”...angka: number[]— tiga titik (...) adalah sintaks rest parameter. TypeScript mengumpulkan semua argument yang dikirim ke dalam arrayangka.- Loop
for...ofmengiterasi semua nilai dalam array tersebut. - Function bisa dipanggil dengan 1, 3, 5, atau berapa pun argument.
Rest Parameter + Parameter Biasa
Section titled “Rest Parameter + Parameter Biasa”function sapaSemua(pengirim: string, ...penerima: string[]): void { for (const p of penerima) { console.log(`${pengirim} menyapa ${p}`) }}
sapaSemua("Guru", "Andi", "Budi", "Citra")// Guru menyapa Andi// Guru menyapa Budi// Guru menyapa CitraRest parameter harus selalu di posisi terakhir.
Latihan
Section titled “Latihan”- Buat function
rata(...)yang menghitung rata-rata dari sejumlah angka. - Buat function
gabungKata(pemisah, ...kata)yang menggabungkan kata dengan pemisah tertentu.
Ringkasan
Section titled “Ringkasan”...nama: tipe[]mengumpulkan semua argument ke dalam array.- Function bisa dipanggil dengan jumlah argument berapapun.
- Rest parameter harus di posisi terakhir.
- Gunakan loop untuk memproses setiap nilai.