Lompat ke konten utama
←

TypeScript Dasar

Pelajaran 12 dari 16

Union, literal, dan penyempitan

unknown dibanding any

Setelah pelajaran ini kamu bisa menerima nilai dari luar program sebagai unknown dan memeriksanya sebelum dipakai.

  • ±13 menit
  • 3 latihan
  • Diperiksa 23 Sep 2026

Latihan di pelajaran ini butuh akun gratis. Progres, kode, dan catatanmu hanya tersimpan di browser ini. Masuk untuk menyimpannya

Materi

Data yang datang dari luar program — isi berkas, jawaban jaringan, hasil JSON.parse — belum tentu berbentuk seperti yang kamu harapkan. TypeScript menyediakan dua tipe untuk nilai yang bentuknya belum diketahui, dan keduanya berperilaku sangat berbeda.

any mematikan pemeriksaan tipe pada nilai itu: semua properti boleh dibaca, semua method boleh dipanggil, dan kompiler diam. Kesalahan baru muncul saat program berjalan, dalam bentuk pesan seperti Cannot read properties of undefined. unknown menerima nilai apa pun juga, tetapi tidak mengizinkan apa-apa sebelum tipenya dipersempit.

function f1(a: any) {
  a.b();          // diterima kompiler, bisa gagal saat berjalan
}

function f2(a: unknown) {
  a.b();          // ditolak: 'a' is of type 'unknown'
}

function namaProduk(data: unknown): string {
  if (typeof data === "object" && data !== null && "nama" in data && typeof data.nama === "string") {
    return data.nama;
  }
  return "tanpa nama";
}

Pemeriksaan bertingkat di atas dibutuhkan karena typeof null juga menghasilkan "object". Urutannya: pastikan berbentuk objek, pastikan bukan null, pastikan propertinya ada, lalu pastikan tipe isinya. Setelah empat pemeriksaan itu, data.nama sudah dikenali sebagai string dan boleh dikembalikan.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Lanjutkan ke

Tampilkan 1 lagi

Sebagian materi kelas ini diadaptasi dari Exercism — jalur TypeScript (MIT).