Optional Parameter
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah halaman ini, kamu dapat membuat parameter opsional dengan tanda ? dan menangani nilainya dengan aman.
Pendahuluan
Section titled “Pendahuluan”Tidak semua data selalu tersedia. Email siswa mungkin belum diisi. Nomor telepon mungkin belum ada. Optional parameter memungkinkan kamu memanggil function tanpa harus mengirimkan semua parameter.
Sintaks
Section titled “Sintaks”Tambahkan ? setelah nama parameter:
function sapa(nama: string, sapaan?: string): void { // sapaan mungkin undefined}Analogi
Section titled “Analogi”Topping Minuman
Section titled “Topping Minuman”Di kedai minuman, topping adalah opsional. Kamu bisa memesan teh tanpa topping, atau teh dengan topping jelly, atau teh dengan topping boba.
Wajib: [Minuman]Opsional: [Topping?] ← boleh ada, boleh tidakMari Mencoba
Section titled “Mari Mencoba”Buat src/bab4/optional-parameter.ts:
function cetakProfil( nama: string, kelas: string, email?: string): void { console.log(`Nama : ${nama}`) console.log(`Kelas: ${kelas}`)
if (email !== undefined) { console.log(`Email: ${email}`) } else { console.log(`Email: (belum diisi)`) } console.log("---")}
cetakProfil("Andi", "XI RPL 1")cetakProfil("Budi", "XI RPL 2", "budi@smk.sch.id")cetakProfil("Citra", "XI RPL 1")Jalankan:
tsx src/bab4/optional-parameter.tsOutput
Section titled “Output”Nama : AndiKelas: XI RPL 1Email: (belum diisi)---Nama : BudiKelas: XI RPL 2Email: budi@smk.sch.id---Nama : CitraKelas: XI RPL 1Email: (belum diisi)---Penjelasan Baris per Baris
Section titled “Penjelasan Baris per Baris”email?: string— tanda?membuat parameter opsional. Tipe efektifnya adalahstring | undefined.if (email !== undefined)— wajib cek sebelum menggunakan parameter opsional.- Pemanggilan tanpa
emailmenghasilkanundefinedsecara otomatis.
Gunakan ?? sebagai Nilai Default
Section titled “Gunakan ?? sebagai Nilai Default”function sapa(nama: string, sapaan?: string): string { const s = sapaan ?? "Halo" return `${s}, ${nama}!`}
console.log(sapa("Dewi")) // "Halo, Dewi!"console.log(sapa("Dewi", "Selamat pagi")) // "Selamat pagi, Dewi!"Aturan Penting
Section titled “Aturan Penting”Latihan
Section titled “Latihan”Buat function buatLaporan(nama, nilai, catatan?). Jika catatan tidak dikirim, tampilkan "Tidak ada catatan".
Ringkasan
Section titled “Ringkasan”- Tanda
?setelah nama parameter membuatnya opsional. - Nilai parameter opsional yang tidak dikirim adalah
undefined. - Selalu cek
!== undefinedatau gunakan??sebelum menggunakan. - Parameter opsional harus berada di posisi terakhir.