fungsiparameteroptionalMenengah3 mnt baca

Parameter Optional dan Default

Tanda tanya, nilai default, dan rest parameter: fleksibilitas tanpa kehilangan keamanan tipe.

Parameter Optional dengan ?

typescript
function sapa(nama: string, sapaan?: string): string {
  return `${sapaan ?? "Halo"}, ${nama}!`;
}

sapa("Ana");          // ok -> "Halo, Ana!"
sapa("Ana", "Hai");   // ok -> "Hai, Ana!"

Tanda ? membuat parameter boleh dilewatkan. Di dalam fungsi, tipenya menjadi string | undefined, jadi kamu wajib menanganinya (di contoh ini dengan ??).

Nilai Default

typescript
function buatUser(nama: string, peran: string = "pengguna"): string {
  return `${nama} (${peran})`;
}

buatUser("Ana"); // peran otomatis "pengguna"

Parameter dengan default otomatis dianggap optional oleh pemanggil, tapi di dalam fungsi tipenya tetap string murni (tidak ada undefined) karena default selalu mengisi. Ini lebih nyaman daripada ? bila ada nilai fallback yang jelas.

Rest Parameter Bertipe

typescript
function jumlahkan(...angka: number[]): number {
  return angka.reduce((total, n) => total + n, 0);
}

jumlahkan(1, 2, 3);       // 6
jumlahkan(1, "dua");      // Error: string tidak masuk number[]

Rest parameter diketik sebagai array. Semua argumen tambahan dicek satu per satu.

Aturan Urutan

Parameter optional dan ber-default harus diletakkan setelah parameter wajib:

typescript
function salah(a?: string, b: string) {} // Error: A required parameter cannot follow an optional parameter.
function benar(a: string, b?: string) {} // ok

Catatan teknis: param?: string dan param: string | undefined hampir sama, tapi tidak identik. Dengan exactOptionalPropertyTypes: true, ? berarti "boleh absen", sedangkan | undefined berarti "boleh diisi undefined eksplisit". Untuk kebanyakan project, perbedaan ini tidak terasa, tapi opsi itu ada kalau kamu butuh presisi ekstra.