Tipe Dasar — TypeScript

TypeScript memiliki beberapa tipe dasar: string — teks number — angka (integer dan float) boolean — true/false any — bisa tipe apapun (hindari!) unknown —…

Type memberi tahu TypeScript jenis isi sebuah variabel atau parameter. Tiga yang paling sering dipakai: string untuk teks, number untuk angka, dan boolean untuk true atau false. Mirip kolom di formulir online: kolom nama menerima huruf, kolom umur cuma menerima angka, dan kotak centang cuma bisa dicentang atau gak.

🧪 Tebakan cepat: let skor = 90; ditulis tanpa type annotation, lalu baris berikutnya skor = "95";. TypeScript protes atau diam saja? Tebak dulu, jawabannya ada di bagian "Inference: TypeScript menebak type".

Tiga type dasar

let nama: string = "Budi";
let skor: number = 90;
let lulus: boolean = true;

Inference: TypeScript menebak type

let skor = 90;
skor = "95";

Gak ada type annotation, tapi baris kedua tetap ditolak:

Type 'string' is not assignable to type 'number'. ts(2322)

Itu jawaban tebakannya. Kalau variabel langsung diberi isi waktu dibuat, TypeScript menebak type-nya dari isi itu. Ini disebut inference. Arahkan mouse ke skor di VS Code, muncul let skor: number. Jadi type annotation di variabel boleh dilewati kalau isinya sudah jelas.

Ini yang TypeScript katakan untuk beberapa kombinasi, sama persis dengan yang bisa kamu coba di Lab:

Baris 1 Baris 2 Kata TypeScript
let skor = 90; skor = 95; gak ada error
let skor = 90; skor = "95"; Type 'string' is not assignable to type 'number'.
let skor: number = 90; skor = true; Type 'boolean' is not assignable to type 'number'.
let skor: any = 90; skor = "95"; gak ada error

Parameter function beda: TypeScript gak bisa menebak apa yang nanti dikirim pemanggilnya. Tanpa type, dia protes Parameter 'nama' implicitly has an 'any' type. ts(7006). Jadi parameter selalu diberi type.

Type di parameter dan return function

function sapa(nama: string): string {
  return "Halo, " + nama + "!";
}

console.log(sapa("Budi")); // Halo, Budi!
console.log(sapa("Ani"));  // Halo, Ani!

Janji return type ditagih. Kalau badan function-nya masih kosong, atau isinya cuma console.log, TypeScript protes:

A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value. ts(2355)

Artinya: type yang dijanjikan bukan undefined, void, atau any, jadi function ini wajib return sebuah nilai.

any dan unknown

any dan unknown sama-sama menerima semua jenis isi. Bedanya ada di apa yang boleh kamu lakukan sesudahnya. Pakai kode ini, dengan toFixed(1), method angka yang menulis angka dengan satu angka di belakang koma (95 jadi "95.0"):

let skor: any = 90;
skor = "95";
console.log(skor.toFixed(1));
let skor: unknown = 90;
skor = "95";

if (typeof skor === "number") {
  console.log(skor.toFixed(1));
}

Di dalam if, TypeScript tahu skor pasti angka. Cara memastikan seperti ini dibahas lebih dalam di materi Type Narrowing.

null, undefined, dan void

function catat(pesan: string): void {
  console.log(pesan);
}

⚠️ Jebakan yang sering ketemu

TL;DR: string untuk teks, number untuk semua angka, boolean untuk true/false. Variabel yang langsung diberi isi gak wajib diberi type annotation, karena TypeScript menebaknya (inference): let skor = 90 sudah number. Parameter selalu diberi type, dan return type ditulis sesudah kurung: function sapa(nama: string): string { return "Halo, " + nama + "!"; }. Return type selain void wajib dipenuhi dengan return. any mematikan pengecekan, unknown menerima apa pun tapi harus dicek dulu sebelum dipakai. void untuk function tanpa nilai kembali.

Yang akan kamu pelajari