Pemrograman Berorientasi Railway
Rangkai operasi yang mungkin gagal tanpa try/catch.
Pemrograman Berorientasi Railway adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.
Metafora Jalur Kereta
Pemrograman berorientasi rel menggambarkan perhitungan sebagai dua jalur paralel: jalur keberhasilan dan jalur kegagalan. Setelah berpindah ke jalur kegagalan, Anda tetap di sana dan melewati langkah-langkah berikutnya.
Merangkai Fungsi Hasil
Setiap langkah menerima sebuah nilai dan mengembalikan Result. Kita ingin menghubungkan langkah-langkah tersebut agar kegagalan pertama segera menghentikan rangkaian dan dibawa hingga akhir.
type Result<T, E> = { ok: true; value: T } | { ok: false; error: E };
const ok = <T>(value: T): Result<T, never> => ({ ok: true, value });
const err = <E>(error: E): Result<never, E> => ({ ok: false, error });map: Mengubah Nilai Keberhasilan
map menerapkan fungsi biasa pada nilai saat Hasil berstatus ok, dan meneruskan kegagalan tanpa perubahan. Proses ini tetap berada di jalur keberhasilan.
function map<T, U, E>(r: Result<T, E>, f: (t: T) => U): Result<U, E> {
return r.ok ? ok(f(r.value)) : r;
}
console.log(map(ok(2), n => n + 1)); // { ok: true, value: 3 }flatMap: Merangkai Langkah yang Dapat Gagal
Saat langkah berikutnya sendiri mengembalikan Hasil, gunakan flatMap (juga disebut andThen). Ini menghindari Hasil yang bersarang dan menghentikan rangkaian saat terjadi kegagalan.
function flatMap<T, U, E>(r: Result<T, E>, f: (t: T) => Result<U, E>): Result<U, E> {
return r.ok ? f(r.value) : r;
}Mengapa Bukan flatMap map
Jika Anda menggunakan map dengan fungsi yang mengembalikan Hasil, Anda akan mendapatkan Result<Result<U,E>,E>. flatMap meratakan satu tingkat tersebut, sehingga tetap menghasilkan satu Hasil.
Menghentikan pada Kesalahan Pertama
Begitu sebuah langkah mengembalikan err, setiap flatMap berikutnya meneruskannya tanpa perubahan. Langkah-langkah yang tersisa tidak pernah dijalankan, persis seperti berpindah ke jalur kegagalan.
const start = err("boom") as Result<number, string>;
const out = flatMap(start, n => ok(n + 1));
console.log(out); // { ok: false, error: "boom" }Membangun Alur
Gabungkan langkah-langkah validasi, yang masing-masing mengembalikan Hasil. Kegagalan pertama menjadi hasil alur; jika semuanya berhasil, nilai keberhasilan mengalir hingga akhir.
function parseNum(s: string): Result<number, string> {
const n = Number(s);
return Number.isNaN(n) ? err("not a number") : ok(n);
}
function positive(n: number): Result<number, string> {
return n > 0 ? ok(n) : err("must be positive");
}Menjalankan Alur
Merangkai flatMap meneruskan nilai melalui setiap langkah yang dapat gagal. Kegagalan di mana pun menghentikan rangkaian dan menampilkan kesalahan tersebut.
const good = flatMap(parseNum("5"), positive);
console.log(good); // { ok: true, value: 5 }
const bad = flatMap(parseNum("-3"), positive);
console.log(bad); // { ok: false, error: "must be positive" }Menggabungkan map dan flatMap
Gunakan flatMap untuk langkah-langkah yang dapat gagal dan map untuk transformasi murni. Bersama-sama, keduanya menjaga jalur keberhasilan tetap linear dan menangani kesalahan secara otomatis.
const result = map(flatMap(parseNum("10"), positive), n => n * 2);
console.log(result); // { ok: true, value: 20 }Tidak Perlu try/catch
Seluruh alur menyatakan keberhasilan dan kegagalan melalui nilai. Tidak ada try/catch, dan tipe setiap langkah membuat jalur kesalahan eksplisit serta tidak dapat dihindari.
Mengapa Pendekatan Ini Dapat Diperluas
Kode berorientasi rel menjaga alur kerja yang kompleks tetap mudah dibaca: setiap langkah berukuran kecil dan murni, kesalahan diteruskan secara otomatis, dan penambahan langkah tidak memperumit penanganan kesalahan yang sudah ada.
Pemeriksaan Singkat
Pemeriksaan singkat untuk pelajaran ini.
Rekapitulasi
Pemrograman berorientasi rel merangkai langkah-langkah yang mengembalikan Result dengan map (mengubah keberhasilan) dan flatMap/andThen (merangkai langkah yang dapat gagal serta meratakan Hasil yang bersarang). err pertama menghentikan langkah-langkah lainnya dan meneruskannya hingga akhir tanpa try/catch.
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 “Pemrograman Berorientasi Railway” gratis?
Ya — teks lengkap “Pemrograman Berorientasi Railway” 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 “Pemrograman Berorientasi Railway”?
Rangkai operasi yang mungkin gagal tanpa try/catch. 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 4 dari 4.
Berapa lama pelajaran “Pemrograman Berorientasi Railway” 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