tipeinferenceannotationPemula3 mnt baca

Annotation vs Type Inference

Kapan menulis tipe secara manual dan kapan membiarkan TypeScript menebaknya sendiri.

Dua Cara Memberi Tipe

Annotation artinya menulis tipe secara eksplisit:

typescript
let harga: number = 50000;

Inference artinya TypeScript menebak tipe dari nilai awal:

typescript
let harga = 50000; // otomatis bertipe number
harga = "mahal";   // Error: Type 'string' is not assignable to type 'number'.

Inference bukan berarti "tanpa tipe". Variabelnya tetap bertipe number, hanya saja kamu tidak perlu menuliskannya.

Kapan Annotation Wajib

Ada situasi di mana inference tidak bisa menebak, dan kamu harus eksplisit:

1. Parameter fungsi. TypeScript tidak menebak tipe parameter (kecuali konteksnya jelas):

typescript
function sapa(nama) { // Error implisit: 'nama' implicitly has an 'any' type
  return `Halo ${nama}`;
}

function sapa(nama: string) { // benar
  return `Halo ${nama}`;
}

2. Variabel yang diisi belakangan:

typescript
let pemenang: string; // tanpa annotation jadi any
// ... logika panjang ...
pemenang = "Tim A";

3. Return type untuk dokumentasi. Inference bisa menebak return type, tapi menulisnya eksplisit membuat kontrak fungsi jelas dan menangkap error saat isi fungsi berubah tanpa sengaja.

Catatan teknis: Jebakan klasik inference adalah let daftar = []. TypeScript menyimpulkan tipenya sebagai any[] (atau error di strict mode), lalu semua isi array lolos tanpa cek. Selalu beri annotation: let daftar: string[] = [];.