Lewati ke konten

Error Corner BAB 4

Setelah halaman ini, kamu dapat mengenali penyebab error function yang paling umum dan memperbaikinya dengan tepat.


Error pada function sering mudah dideteksi oleh TypeScript, tapi ada juga bug logika yang tidak menghasilkan error merah namun membuat program berperilaku salah.


Error 1 — Function Didefinisikan tapi Tidak Pernah Dipanggil

Section titled “Error 1 — Function Didefinisikan tapi Tidak Pernah Dipanggil”
📄 TypeScript
function tampilkanSalam(): void {
console.log("Halo!")
}
// Tidak pernah dipanggil — tidak ada output

Mendefinisikan function hanya menyimpan “resep”. Program harus memanggilnya secara eksplisit.

📄 TypeScript
function tampilkanSalam(): void {
console.log("Halo!")
}
tampilkanSalam() // ← wajib dipanggil

📄 TypeScript
function hitungLuas(p: number, l: number): number {
const luas = p * l
// TypeScript Error: Function lacks ending return statement
}
📄 TypeScript
function hitungLuas(p: number, l: number): number {
return p * l
}

📄 TypeScript
function sapa(nama: string): void {
console.log(`Halo, ${nama}!`)
}
sapa(123) // Error: Argument of type 'number' is not assignable to type 'string'
📄 TypeScript
sapa("Andi")
sapa(String(123)) // konversi jika memang diperlukan

📄 TypeScript
function hitung(a: number, b: number): number {
return a + b
}
hitung(5) // Error: Expected 2 arguments, but got 1
hitung(5, 3, 7) // Error: Expected 2 arguments, but got 3

Kirim argument sesuai jumlah parameter. Gunakan optional atau rest parameter jika jumlahnya memang bervariasi.


Error 5 — Menggunakan Variabel Lokal di Luar Function

Section titled “Error 5 — Menggunakan Variabel Lokal di Luar Function”
📄 TypeScript
function hitungNilai(): void {
const hasil = 90
}
hitungNilai()
console.log(hasil) // Error: Cannot find name 'hasil'
📄 TypeScript
function hitungNilai(): number {
return 90
}
const hasil = hitungNilai()
console.log(hasil)

Error 6 — Optional Parameter di Depan Parameter Biasa

Section titled “Error 6 — Optional Parameter di Depan Parameter Biasa”
📄 TypeScript
// Error: A required parameter cannot follow an optional parameter
function f(a?: string, b: string): void { }
📄 TypeScript
function f(a: string, b?: string): void { }

Parameter opsional harus selalu di belakang parameter wajib.


Error 7 — Tidak Menangani Parameter Opsional yang Mungkin Undefined

Section titled “Error 7 — Tidak Menangani Parameter Opsional yang Mungkin Undefined”
📄 TypeScript
function cetakEmail(nama: string, email?: string): void {
console.log(email.toUpperCase()) // Error! email mungkin undefined
}
📄 TypeScript
function cetakEmail(nama: string, email?: string): void {
if (email !== undefined) {
console.log(email.toUpperCase())
} else {
console.log("Email tidak tersedia")
}
}

Error 8 — Memanggil Anonymous Function Sebelum Deklarasi

Section titled “Error 8 — Memanggil Anonymous Function Sebelum Deklarasi”
📄 TypeScript
console.log(hitung(5)) // Error! 'hitung' used before its initialization
const hitung = function(n: number): number {
return n * 2
}

Selalu deklarasikan variable function sebelum memanggilnya. Named function (function hitung(...)) bisa dipanggil sebelum dideklarasikan karena di-hoist, tapi const/let tidak.


  1. Periksa apakah function sudah dipanggil.
  2. Periksa apakah tipe parameter dan argument cocok.
  3. Periksa apakah ada return untuk setiap jalur kode.
  4. Tambahkan console.log di dalam function untuk memantau nilai parameter.
  5. Periksa apakah variabel lokal diakses dari luar function.

Identifikasi dan perbaiki semua bug dalam kode berikut:

📄 TypeScript
function hitungRataRata(a: number, b: number, c: number): number {
const total = a + b + c
}
function tampilkan(nama?: string, nilai: number): void {
console.log(`${nama}: ${nilai}`)
}
const kuadrat = function(n: number): number {
return n * n
}
console.log(kuadrat(4))
tampilkan("Andi", 88)
console.log(hitungRataRata(80, 90, 70))

  • Function yang tidak dipanggil tidak menghasilkan apapun.
  • Setiap jalur kode non-void wajib punya return.
  • Tipe dan jumlah argument harus cocok dengan parameter.
  • Variabel lokal tidak bisa diakses dari luar function.
  • Optional parameter wajib di posisi terakhir.