Lompat ke konten utama
←

TypeScript Dasar

Pelajaran 11 dari 16

Union, literal, dan penyempitan

Menyempitkan dengan in

Setelah pelajaran ini kamu bisa membedakan dua bentuk objek dengan operator in.

  • ±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

Operator in memeriksa apakah sebuah nama properti ada di dalam objek. Pada union dua bentuk objek, pemeriksaan ini menyempitkan tipenya ke bentuk yang memiliki properti tersebut, karena typeof tidak menolong: kedua bentuk sama-sama menghasilkan "object".

type Motor = { cc: number };
type Mobil = { pintu: number; bagasi: boolean };

function jenis(k: Motor | Mobil): string {
  if ("pintu" in k) return `Mobil ${k.pintu} pintu`;
  return `Motor ${k.cc} cc`;
}

Nama properti yang diperiksa ditulis sebagai teks di antara tanda kutip. Di dalam blok if, properti pintu sudah boleh dibaca; di luar blok itu, yang tersisa hanya bentuk Motor. Properti yang dipilih untuk memeriksa harus properti yang hanya dimiliki salah satu bentuk — properti yang ada di keduanya tidak menyempitkan apa pun.

Cara lain yang lazim dipakai adalah menambahkan satu properti penanda bertipe literal, misalnya jenis: "motor" dan jenis: "mobil", lalu membandingkannya dengan ===. Keduanya sah; operator in berguna ketika bentuk datanya sudah ada dan tidak bisa ditambahi penanda.

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