0Pricing
TypeScript Academy · Pelajaran

Fungsi Penjaga Tipe Buatan Pengguna

Tulis predicate is untuk membuat penjaga tipe khusus.

Fungsi Penjaga Tipe Buatan Pengguna adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 4 pelajaran total.

Selamat Datang

Penjaga tipe buatan pengguna memungkinkan Anda merangkum pemeriksaan penyempitan ke dalam fungsi yang dapat digunakan kembali menggunakan tipe pengembalian predikat `is`.

Tipe Pengembalian Predikat is

Fungsi penjaga tipe mengembalikan `paramName is Type`. Ketika fungsi mengembalikan true, TypeScript menyempitkan parameter menjadi tipe tersebut.
function isString(val: unknown): val is string {
  return typeof val === 'string';
}

Menggunakan Penjaga Tipe

Panggil penjaga tipe dalam kondisi if. TypeScript menyempitkan tipe di dalam blok tersebut.
function process(val: unknown) {
  if (isString(val)) {
    console.log(val.toUpperCase()); // val: string
  }
}

Penjaga Tipe untuk Antarmuka

Karena Anda tidak dapat menggunakan instanceof dengan antarmuka, penjaga tipe merupakan cara utama untuk menyempitkan gabungan antarmuka.
interface Cat { meow(): void }
interface Dog { bark(): void }
function isCat(pet: Cat | Dog): pet is Cat {
  return 'meow' in pet;
}

Penjaga Tipe untuk Objek Kompleks

Tulis penjaga tipe yang memvalidasi bentuk objek saat eksekusi sebelum menggunakannya sebagai tipe tertentu.
interface User { name: string; age: number; }
function isUser(val: unknown): val is User {
  return (
    typeof val === 'object' &&
    val !== null &&
    typeof (val as any).name === 'string' &&
    typeof (val as any).age === 'number'
  );
}

Penjaga Tipe vs Aserti

Penjaga tipe melakukan pemeriksaan saat eksekusi. Aserti tipe (as Type) hanya berlaku saat kompilasi dan dapat memberikan informasi yang salah. Utamakan penjaga tipe untuk data eksternal.

Array.isArray sebagai Penjaga Tipe

Array.isArray adalah penjaga tipe bawaan. TypeScript memahaminya dan melakukan penyempitan yang sesuai.
function flatten(val: string | string[]): string[] {
  return Array.isArray(val) ? val : [val];
}

Penjaga Tipe Generik

Penjaga tipe dapat dibuat generik untuk pemeriksa saat eksekusi yang dapat digunakan kembali.
function isNonNull<T>(val: T | null | undefined): val is T {
  return val !== null && val !== undefined;
}
const values = [1, null, 2, undefined].filter(isNonNull);
// values: number[]

Fungsi Aserti

Fungsi aserti (menggunakan asserts) melemparkan kesalahan jika kondisi bernilai salah dan menyempitkan tipe setelah pemanggilan.
function assertIsString(val: unknown): asserts val is string {
  if (typeof val !== 'string') throw new TypeError('Not a string');
}
assertIsString(input);
console.log(input.toUpperCase()); // narrowed to string

Tanggung Jawab Penjaga Tipe

TypeScript sepenuhnya mempercayai nilai pengembalian penjaga tipe. Jika penjaga Anda salah, TypeScript tidak akan mendeteksi ketidaksesuaian tersebut saat kompilasi.

Penjaga Tipe dalam filter dan find

Teruskan penjaga tipe langsung ke array.filter untuk menyempitkan tipe hasil.
const mixed: (string | null)[] = ['a', null, 'b'];
const strings = mixed.filter((x): x is string => x !== null);
// strings: string[]

Pemeriksaan Cepat

Anotasi tipe pengembalian apa yang menandai suatu fungsi sebagai penjaga tipe TypeScript?

Ringkasan

Penjaga tipe buatan pengguna menggunakan tipe pengembalian `param is Type` untuk merangkum logika penyempitan. Penjaga ini bekerja dengan filter/find, memungkinkan penyempitan antarmuka, dan dapat dibuat generik. Fungsi aserti menyempitkan tipe tanpa mengembalikan boolean.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Fungsi Penjaga Tipe Buatan Pengguna” gratis?

Ya — teks lengkap “Fungsi Penjaga Tipe Buatan Pengguna” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Fungsi Penjaga Tipe Buatan Pengguna”?

Tulis predicate is untuk membuat penjaga tipe khusus. Kamu berlatih TypeScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai TypeScript Academy?

Tidak diperlukan pengalaman sebelumnya. TypeScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Fungsi Penjaga Tipe Buatan Pengguna” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran TypeScript Academy ini?

Ya. Setiap pelajaran TypeScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Penyempitan dengan typeof dan Kebenaran
  2. Penyempitan dengan instanceof dan in
  3. Fungsi Penjaga Tipe Buatan Pengguna
  4. Pemeriksaan Kelengkapan dengan never
← Kembali ke TypeScript Academy