Troubleshooting: P3K TypeScript 🚑
TypeScript itu bawel. Sering banget dia ngasih pesan error yang panjang dan bikin panik. Tenang, ini daftar "penyakit" umum dan "obatnya".
1. "Object is possibly 'null' or 'undefined'" 👻
Artinya: TS takut variabel lo kosong pas lagi diakses.
const input = document.getElementById("email");
// ❌ Error: input.value (Gimana kalau elemennya gak ketemu?)Solusi:
-
Pake If (Type Guard):
if (input) { ... } -
Optional Chaining:
input?.value(Aman, return undefined kalau kosong) -
Non-null Assertion (Tanda Seru):
input!.value(Cuma kalau lo yakin 1000% ada isinya)
2. "Element implicitly has an 'any' type..." 🗝️
Artinya: Lo coba akses Object pake Key yang dinamis (string), tapi TS gak tau isi object-nya apa aja.
const user = { nama: "Pian", umur: 25 };
const kunci = "nama";
// ❌ Error: TS gak tau kalau "nama" beneran ada di user
// console.log(user[kunci]);Solusi: Kasih tipe Record atau keyof.
// Cara 1: Casting kuncinya
console.log(user[kunci as keyof typeof user]);
// Cara 2: Definisi tipe di awal
const data: Record<string, any> = { ... };3. "Property 'X' does not exist on type 'Y'" 🚫
Artinya: Lo mau akses properti yang gak ada di definisi tipe data lo.
interface User {
nama: string;
}
const u: User = { nama: "Pian" };
// ❌ Error: Di Interface User gak ada 'umur' woy!
// u.umur = 25;Solusi:
-
Cek typo.
-
Tambahin properti di
Interface(pake?kalau optional). -
Atau pake
Intersection(User & { umur: number }) kalau mau nambah dadakan.
4. "Type 'string' is not assignable to type 'number'" 🧱
Artinya: Jelas banget. Salah masukin tipe data.
Solusi:
-
Cek variabel lo.
-
Cek return value function lo.
-
Kalau emang datanya dari luar (API) bisa berubah-ubah, pake
unknownatauUnion Type.
5. "Circular dependency detected" 🔄
Artinya: File A import File B, tapi File B import File A. Muter-muter terus gak ada ujungnya.
Solusi: Pecah kodingan yang diperebutkan ke File C (Shared). Biar A dan B sama-sama import dari C.
Tips Debugging Cepat ⚡
-
Restart TS Server: Kadang VS Code nge-lag.
- Cmd + Shift + P -> Ketik "Restart TS Server".
-
Hover is Your Friend: Arahkan mouse ke variabel yang error, baca tooltip-nya pelan-pelan.
-
No Any: Jangan tergoda pake any buat nyelesain masalah. Itu nunda masalah, bukan nyelesain.