Coba kasih ke temen kamu: angka 5, kalimat "halo", jawaban benar/salah, daftar belanja. Tiap "barang" punya bentuk + cara dipake yang beda. Komputer juga gitu — dia harus tau "ini angka buat hitung", "ini teks buat ditampilin", "ini boolean buat keputusan". JavaScript ngebagi data jadi beberapa tipe: String (teks), Number (angka), Boolean (true/false), Array (daftar), Object (struktur), null + undefined (kekosongan). Paham tipe data = hindari 50% bug "kenapa kode aku error padahal udah bener?"
💡 JavaScript itu loosely typed. Beda dari Java atau TypeScript yang strict — di JavaScript kamu bisa ganti tipe variabel kapan aja.
let x = 5; x = "halo"legal. Bebas, tapi bisa jadi sumber bug subtle. Itu kenapa banyak project modern pakai TypeScript buat tambah type safety.
JavaScript memiliki beberapa tipe data dasar:
- String — teks, diapit tanda kutip:
"Halo"atau'Halo' - Number — angka:
42,3.14 - Boolean —
trueataufalse - Array — kumpulan data:
[1, 2, 3] - Object — kumpulan pasangan kunci-nilai:
{ nama: "Budi" } - null — sengaja kosong
- undefined — belum diberi nilai
Gunakan typeof untuk mengecek tipe data:
typeof "Halo" // "string"
typeof 42 // "number"
typeof true // "boolean"
🧪 Tebakan cepat. Tanpa run kode, tebak dulu hasil tiap baris ini:
typeof null // ??? typeof [] // ??? typeof NaN // ??? typeof undefined // ???Jawaban:
"object","object","number","undefined". Yang dua pertama bug klasik JavaScript yang gak akan diperbaiki — pakaix === nulldanArray.isArray(x)buat cek pasti.
🎭 Analogi sehari-hari
Tipe data = jenis kemasan barang di pasar:
- String = kantong plastik bertuliskan label
- Number = koin/uang kertas
- Boolean = saklar lampu (on/off)
- Array = rak buku berurutan
- Object = lemari berlabel laci-laci
- null = kotak yang sengaja dikosongkan
- undefined = kotak yang belum diisi sama sekali
⚠️ Jebakan yang sering ditemui
typeof null === "object"— bug JavaScript sejak hari pertama yang tidak akan diperbaiki. Cek pakaix === null.typeof []juga"object"— array di JS adalah object. PakaiArray.isArray(x)untuk cek pasti.NaNtypeof"number"— meskipun namanya "Not a Number". Cek pakaiNumber.isNaN(x).nullvsundefinedbeda —nulldipasang sengaja,undefinedbelum disentuh. Tapinull == undefinedtrue (loose equal).- Number JS adalah floating-point —
0.1 + 0.2 !== 0.3(hasilnya 0.30000000000000004). PakaitoFixed()atau library decimal untuk hitung uang.
TL;DR: Tipe dasar JS: String (teks), Number (angka, floating-point), Boolean (true/false), Array (list), Object (key-value), null (sengaja kosong), undefined (belum diisi). JS loosely typed — variabel bisa ganti tipe kapan aja. typeof null === "object" (bug klasik), typeof [] juga "object" (pakai Array.isArray), typeof NaN === "number". 0.1 + 0.2 !== 0.3 — pakai toFixed() atau library decimal buat uang.