TypeScript memiliki beberapa tipe dasar:
string— teksnumber— angka (integer dan float)boolean— true/falseany— bisa tipe apapun (hindari!)unknown— tipe aman (harus dicek sebelum dipakai)void— tidak mengembalikan nilainulldanundefinednever— tidak pernah terjadi (error atau infinite loop)
let data: any = "hello"; // bisa apapun — TIDAK AMAN
let mystery: unknown = 42; // harus dicek dulu sebelum dipakai
// Type annotation pada fungsi
function sapa(nama: string): string {
return `Halo, ${nama}!`;
}
// void — tidak return apapun
function logPesan(pesan: string): void {
console.log(pesan);
}
Kapan never dipakai?
Tipe never berarti fungsi tersebut secara teori tidak akan pernah mengembalikan nilai — entah karena selalu throw error atau loop tanpa henti.
// Fungsi yang selalu throw error — tidak pernah "selesai" secara normal
function gagal(pesan: string): never {
throw new Error(pesan);
}
// Loop tanpa henti juga return never
function selamanya(): never {
while (true) {
console.log("tick");
}
}
TypeScript memakai never untuk memastikan semua cabang sudah ditangani. Contoh: di switch atas union literal, cabang default harus return never untuk menjamin tidak ada kasus yang terlewat.
null vs undefined
Keduanya menyatakan "tidak ada nilai", tapi dengan niat berbeda:
undefined— "belum ada nilai" (default variable yang belum di-assign).null— "sengaja dikosongkan" (kita explicit bilang "tidak ada").
let belumDiisi: undefined = undefined;
let sengajaKosong: null = null;
Di mode "strict": true, TypeScript memaksa kamu menangani kedua kasus tersebut secara eksplisit — ini mencegah bug klasik "cannot read property of undefined".
Tips: Hindari
anysebisa mungkin. Gunakanunknownjika tipe belum diketahui.