Jenis Option dan Maybe
Modelkan keberadaan atau ketiadaan nilai secara eksplisit.
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)); // 0Memetakan 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); // 102Pemeriksaan 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.
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
- Masalah dengan Melempar Error
- Memodelkan Jenis Result
- Jenis Option dan Maybe
- Pemrograman Berorientasi Railway