Lompat ke konten utama
←

TypeScript Dasar

Pelajaran 10 dari 16

Union, literal, dan penyempitan

Menyempitkan dengan typeof

Setelah pelajaran ini kamu bisa memakai typeof agar TypeScript tahu tipe pasti sebuah nilai di dalam cabang.

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

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

Materi

Pada nilai bertipe union, TypeScript belum mengizinkan operasi yang hanya ada di salah satu anggotanya. Memanggil nilai.length pada string | number ditolak dengan pesan Property 'length' does not exist on type 'string | number'. Pemeriksaan typeof di dalam if membuat kompiler menyempitkan tipenya di dalam blok tersebut.

function panjangNilai(nilai: string | number): number {
  if (typeof nilai === "string") {
    return nilai.length;   // di sini nilai pasti string
  }
  return nilai;            // di sini nilai pasti number
}

Setelah blok if yang memeriksa string, TypeScript tahu satu-satunya kemungkinan yang tersisa adalah number, sehingga nilai boleh dikembalikan langsung sebagai angka. Penyempitan semacam ini bekerja juga pada else, pada return lebih awal, dan pada pemeriksaan berantai.

typeof di TypeScript adalah operator JavaScript yang sama, jadi hasilnya tetap teks seperti "string", "number", "boolean", "object", dan "function". Dua jebakan JavaScript ikut terbawa: typeof null menghasilkan "object", dan typeof array juga "object", sehingga keduanya perlu pemeriksaan tambahan. Untuk array, pemeriksaan itu adalah Array.isArray(nilai), yang juga dikenali kompiler sebagai penyempit: pada string | string[], cabang yang lolos Array.isArray dianggap string[].

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).