TypeScript Academy · Pelajaran

Jenis Option dan Maybe

Modelkan keberadaan atau ketiadaan nilai secara eksplisit.

Pelajaran 3 dari 413 langkah

Jenis Option dan Maybe 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.

Memodelkan Ketiadaan

Terkadang sebuah nilai memang tidak ada, tanpa kesalahan yang perlu dilaporkan. Opsi (juga disebut Mungkin) secara eksplisit memodelkan keberadaan atau ketiadaan, sebagai alternatif untuk null dan undefined.

Mendefinisikan Opsi

Opsi adalah gabungan terdiskriminasi dengan tag some. Saat some bernilai true, terdapat sebuah nilai; saat false, tidak ada apa pun.

type Option<T> =
  | { some: true; value: T }
  | { some: false };

Konstruktor

Pembantu some dan none memudahkan pembuatan nilai Opsi, serupa dengan ok/err dari Hasil.

const some = <T>(value: T): Option<T> => ({ some: true, value });
const none: Option<never> = { some: false };

Mengembalikan Opsi

Pencarian yang mungkin tidak menemukan apa pun mengembalikan Opsi, bukan T | undefined. Maksud bahwa nilai tersebut bersifat opsional dinyatakan secara eksplisit dalam tipe.

function find<T>(arr: T[], pred: (x: T) => boolean): Option<T> {
  const hit = arr.find(pred);
  return hit === undefined ? none : some(hit);
}

Mempersempit pada some

Periksa opt.some untuk mengakses nilai dengan aman. Kompiler hanya mengizinkan pembacaan value di dalam cabang yang menyatakan keberadaan nilai.

const r = find([1, 2, 3], n => n > 1);
if (r.some) console.log(r.value); // 2
else console.log("not found");

Mengapa Tidak Cukup null?

null dan undefined mudah terlupakan dan menyatu dengan tipe lain. Opsi yang eksplisit memaksa kasus ketiadaan ditangani dan terbaca jelas sebagai sesuatu yang disengaja.

Opsi vs T | undefined

Keduanya dapat memodelkan ketiadaan, tetapi Opsi adalah struktur bernama yang dibuat secara sengaja dan dapat diberi pembantu seperti (map, getOrElse), sehingga mendorong penanganan yang konsisten di seluruh basis kode.

// undefined is implicit and easy to ignore;
// Option is explicit and self-documenting.

Pembantu getOrElse

Untuk mengubah Opsi menjadi nilai konkret, berikan nilai pengganti untuk kasus ketiadaan. Dengan demikian, penanganan ketiadaan tetap berada di satu tempat yang jelas.

function getOrElse<T>(o: Option<T>, fallback: T): T {
  return o.some ? o.value : fallback;
}
console.log(getOrElse(none, 0)); // 0

Memetakan Opsi

map mengubah nilai di dalam hanya saat nilai tersebut ada, dan membiarkan ketiadaan tetap apa adanya. Dengan begitu, Anda dapat merangkai transformasi tanpa pemeriksaan berulang.

function mapOpt<T, U>(o: Option<T>, f: (t: T) => U): Option<U> {
  return o.some ? some(f(o.value)) : none;
}
console.log(mapOpt(some(5), n => n * 2)); // { some: true, value: 10 }

Opsi vs Hasil

Gunakan Opsi saat ketiadaan tidak membawa alasan (pencarian tidak menemukan apa pun). Gunakan Hasil saat kegagalan memiliki kesalahan yang menjelaskannya. Pilih berdasarkan apakah Anda perlu menyampaikan alasannya.

Menggabungkan Opsi

Karena Opsi memiliki map dan getOrElse, rangkaian langkah opsional tetap mudah dibaca, dengan ketiadaan yang secara otomatis menghentikan pemrosesan di sepanjang rangkaian.

const out = getOrElse(mapOpt(find([1,2], n => n > 1), n => n + 100), -1);
console.log(out); // 102

Pemeriksaan Singkat

Pemeriksaan singkat untuk pelajaran ini.

Rekapitulasi

Option<T> adalah { some: true; value } atau { some: false }, yang memodelkan ketiadaan secara eksplisit, bukan dengan null. Buat dengan some/none, sempitkan berdasarkan some, dan gunakan pembantu seperti getOrElse serta map. Gunakan Opsi saat ketiadaan tidak memerlukan alasan, dan Hasil saat kegagalan memerlukannya.

Gratis untuk memulai

Belajar TypeScript dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
101
Pelajaran
352

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Jenis Option dan Maybe” gratis?

Ya — teks lengkap “Jenis Option dan Maybe” 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 “Jenis Option dan Maybe”?

Modelkan keberadaan atau ketiadaan nilai secara eksplisit. 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 “Jenis Option dan Maybe” 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. Masalah dengan Melempar Error
  2. Memodelkan Jenis Result
  3. Jenis Option dan Maybe
  4. Pemrograman Berorientasi Railway
← Kembali ke TypeScript Academy