Type Inference
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah membaca halaman ini, kamu akan mampu:
- Menjelaskan arti type inference
- Mengenali tipe yang TypeScript tebak dari nilai awal
- Menentukan kapan tipe eksplisit diperlukan
- Menulis kode lebih ringkas tanpa kehilangan keamanan tipe
Pendahuluan
Section titled “Pendahuluan”Selama ini kita sering menulis tipe secara eksplisit:
let nama: string = "Putra"let umur: number = 17Penulisan itu benar. Namun TypeScript punya kemampuan untuk melihat nilai awal lalu menebak tipe datanya secara otomatis. Kemampuan ini disebut type inference.
Penjelasan Materi
Section titled “Penjelasan Materi”Jika TypeScript melihat string, ia menyimpulkan tipe string. Jika melihat angka, ia menyimpulkan number. Jika melihat true atau false, ia menyimpulkan boolean.
let nama = "Putra" // TypeScript menebak: stringlet umur = 17 // TypeScript menebak: numberlet aktif = true // TypeScript menebak: booleanWalau kita tidak menulis : string, TypeScript tetap melindungi variabel tersebut:
let nama = "Putra"// nama = 17// Error! Type 'number' is not assignable to type 'string'.Analogi: Guru Menebak Kelas Siswa
Section titled “Analogi: Guru Menebak Kelas Siswa”Bayangkan seorang guru melihat seragam siswa lengkap dengan badge kelas X RPL 1. Guru tidak perlu bertanya, “Kamu kelas berapa?” Ia bisa menebak dengan benar dari informasi yang terlihat.
Nilai awal: "Putra" │ ▼TypeScript melihat tanda kutip │ ▼Kesimpulan: ini stringBegitu pula TypeScript. Nilai awal adalah “seragam” yang membantu TypeScript mengenali tipe variabel.
Visual Illustration
Section titled “Visual Illustration”let nama = "Putra" └───────┘ nilai string │ ▼ TypeScript menyimpulkan │ ▼ nama bertipe string
let nilai = 90 └──┘ nilai number │ ▼ nilai bertipe numberMari Mencoba
Section titled “Mari Mencoba”Buat file src/bab1/type-inference.ts:
// TypeScript menebak tipe dari nilai awallet namaSiswa = "Dewi Rahayu"let umurSiswa = 17let nilaiRataRata = 88.5let statusAktif = true
console.log("Nama:", namaSiswa)console.log("Umur:", umurSiswa)console.log("Nilai:", nilaiRataRata)console.log("Aktif:", statusAktif)
// Coba buka salah satu baris di bawah ini.// TypeScript akan menampilkan error di VS Code.// namaSiswa = 100// umurSiswa = "tujuh belas"// statusAktif = "ya"Jalankan:
tsx src/bab1/type-inference.tsOutput:
Nama: Dewi RahayuUmur: 17Nilai: 88.5Aktif: truePenjelasan Baris per Baris
Section titled “Penjelasan Baris per Baris”let namaSiswa = "Dewi Rahayu"TypeScript melihat nilai di sebelah kanan berupa teks dalam tanda kutip. Maka namaSiswa disimpulkan sebagai string.
let nilaiRataRata = 88.5Nilai 88.5 adalah angka. Maka nilaiRataRata disimpulkan sebagai number.
let statusAktif = trueNilai true adalah boolean. Maka statusAktif disimpulkan sebagai boolean.
Kapan Type Inference Sangat Berguna?
Section titled “Kapan Type Inference Sangat Berguna?”Type inference cocok saat tipe sudah jelas dari nilai awal:
const nama = "Putra" // jelas: stringconst tahun = 2026 // jelas: numberconst sudahLulus = false // jelas: booleanKode menjadi lebih pendek, tetapi tetap aman.
Kapan Tipe Eksplisit Lebih Baik?
Section titled “Kapan Tipe Eksplisit Lebih Baik?”Gunakan tipe eksplisit jika:
1. Variabel belum punya nilai awal
Section titled “1. Variabel belum punya nilai awal”let nilaiAkhir: numbernilaiAkhir = 90Tanpa : number, TypeScript tidak punya informasi untuk menebak tipe.
2. Variabel boleh menerima beberapa tipe
Section titled “2. Variabel boleh menerima beberapa tipe”let email: string | null = nullNilai awalnya null, tetapi kita ingin nanti bisa menyimpan string juga. Jadi tipe perlu dijelaskan.
3. Kamu ingin membuat maksud kode sangat jelas
Section titled “3. Kamu ingin membuat maksud kode sangat jelas”const batasLulus: number = 75Walau TypeScript bisa menebak, anotasi : number tetap boleh digunakan untuk membuat aturan data terlihat jelas.
Type Inference Bukan Berarti Tipe Berubah Bebas
Section titled “Type Inference Bukan Berarti Tipe Berubah Bebas”Pemula kadang mengira tanpa anotasi tipe, variabel bebas berubah apa saja. Itu keliru.
let skor = 0skor = 100 // ✓ masih number// skor = "seratus"// Error! tetap terkunci sebagai numberType inference tetap menghasilkan tipe yang dijaga TypeScript.
Kesalahan Umum
Section titled “Kesalahan Umum”❌ Mengira let data = null bisa diisi string nanti tanpa tipe
Section titled “❌ Mengira let data = null bisa diisi string nanti tanpa tipe”let email = null// email = "putra@smk.sch.id"// Bisa bergantung konfigurasi, tetapi maksud tipe menjadi tidak jelas.Perbaikan: jelaskan kemungkinan nilainya:
let email: string | null = nullemail = "putra@smk.sch.id"❌ Menulis tipe yang bertentangan dengan nilai awal
Section titled “❌ Menulis tipe yang bertentangan dengan nilai awal”let umur: string = 17// Error! number tidak bisa dimasukkan ke stringLatihan
Section titled “Latihan”Buat file src/bab1/latihan-inference.ts:
- Buat empat variabel tanpa anotasi tipe: nama, umur, nilai, status aktif
- Tampilkan semua variabel
- Coba ubah satu variabel menjadi tipe yang salah
- Amati pesan error VS Code
- Kembalikan kode ke tipe yang benar
Ringkasan
Section titled “Ringkasan”- Type inference adalah kemampuan TypeScript menebak tipe dari nilai awal
let nama = "Putra"otomatis menjadi string- Variabel tetap dijaga tipenya meski anotasi tipe tidak ditulis
- Gunakan tipe eksplisit saat belum ada nilai awal atau tipe punya beberapa kemungkinan
- Type inference membuat kode lebih ringkas tanpa menghapus keamanan TypeScript