Lewati ke konten

Error Corner BAB 2

Setelah halaman ini, kamu dapat mengenali penyebab error umum operator dan percabangan, lalu memperbaikinya dengan tepat.


Error operator dan percabangan sering tidak menghasilkan pesan merah dari TypeScript. Kode berjalan, tetapi outputnya salah. Ini disebut logic error — kesalahan yang paling susah ditemukan.

Halaman ini membahas kesalahan umum, mengapa terjadi, dan cara memperbaikinya.


📄 TypeScript
let nilai: number = 80
if (nilai = 75) {
console.log("Lulus")
}

nilai = 75 bukan perbandingan. Ini mengisi nilai 75 ke variabel, lalu kondisinya dievaluasi. Angka bukan nol dianggap truthy, sehingga blok if selalu jalan.

📄 TypeScript
if (nilai >= 75) {
console.log("Lulus")
}

📄 TypeScript
const hari = "Senin"
let pesan: string
switch (hari) {
case "Senin":
pesan = "Upacara"
case "Selasa":
pesan = "Pelajaran biasa"
break
}
console.log(pesan)
🖥️ Output
Pelajaran biasa

Tanpa break, setelah case Senin cocok, program melanjutkan ke case Selasa. Nilai pesan diganti.

📄 TypeScript
case "Senin":
pesan = "Upacara"
break
case "Selasa":
pesan = "Pelajaran biasa"
break

📄 TypeScript
const nilai: number = 80
if (nilai >= 75);
{
console.log("Lulus")
}
🖥️ Output
Lulus

Blok console.log berjalan bahkan jika nilai di bawah 75.

Titik koma setelah if (...) mengakhiri pernyataan if. Blok {} setelahnya berdiri sendiri dan selalu dijalankan.

📄 TypeScript
if (nilai >= 75) {
console.log("Lulus")
}

📄 TypeScript
const nilai: number = 82
if (nilai >= 60) {
console.log("Cukup")
} else if (nilai >= 75) {
console.log("Baik")
}
🖥️ Output
Cukup

Kategori Baik tidak pernah muncul.

Nilai 82 memenuhi >= 60 lebih dulu. Cabang berikutnya tidak pernah diperiksa.

Urutkan dari batas tertinggi ke terendah:

📄 TypeScript
if (nilai >= 75) {
console.log("Baik")
} else if (nilai >= 60) {
console.log("Cukup")
}

📄 TypeScript
const input = "75"
if (input == 75) {
console.log("Nilai tepat")
}

== melakukan konversi tipe otomatis, sehingga "75" == 75 dianggap true. Ini bisa menimbulkan hasil tak terduga di program yang lebih besar.

📄 TypeScript
if (input === "75") {
console.log("Nilai tepat sebagai teks")
}

📄 TypeScript
const lulus: boolean = false
if (!lulus === true) {
console.log("Lulus")
}

!lulus sudah menghasilkan true. Membandingkan true === true adalah redundan dan bisa membingungkan.

📄 TypeScript
if (!lulus) {
console.log("Tidak lulus")
}

📄 TypeScript
const total = 80 + 90 + 70 / 3
console.log(total) // 193.33...

Hanya 70 yang dibagi 3. Operator / punya prioritas lebih tinggi dari +.

📄 TypeScript
const total = (80 + 90 + 70) / 3
console.log(total) // 80

📄 TypeScript
const status = nilai >= 75 ? "Lulus"

Ternary wajib memiliki bagian setelah : untuk kondisi false.

📄 TypeScript
const status = nilai >= 75 ? "Lulus" : "Remedial"

  1. Tambahkan console.log(kondisi) untuk memeriksa nilai boolean di dalam if.
  2. Periksa apakah kamu memakai === atau >= dengan benar.
  3. Periksa prioritas operator — tambahkan kurung jika ada keraguan.
  4. Periksa semua break di switch.
  5. Ubah nilai data dan lihat apakah hasilnya berubah seperti yang diharapkan.

Buat src/bab2/latihan-error.ts. Salin kode berikut dan perbaiki semua kesalahannya:

📄 TypeScript
const nilai: number = 82
if (nilai = 75) {
console.log("Lulus")
}
const kategori = nilai >= 60 ? "Cukup"
const hariIni = "Senin"
let jadwal: string
switch (hariIni) {
case "Senin":
jadwal = "Upacara"
case "Rabu":
jadwal = "Praktik"
break
default:
jadwal = "Umum"
}
console.log(jadwal)

  • = mengisi nilai; === membandingkan nilai.
  • Tambahkan break di setiap case switch.
  • Jangan letakkan titik koma setelah if (...).
  • Urutkan else if dari batas tertinggi ke terendah.
  • Gunakan === bukan == agar perbandingan ketat.