monads
1.0.0
Jika Anda menggunakan repo ini, bintilah
Terinspirasi oleh karat
Nol dependensi • ringan • fungsional
NPM Instal @Thames/Monads
Option<T>
Opsi mewakili nilai opsional: Setiap opsi adalah beberapa dan berisi nilai, atau tidak sama sekali, dan tidak.
Catatan
Dokumentasi lengkap di sini: Opsi
impor {opsi, beberapa, tidak ada} dari '@thames/monads'; const divide = (numerator: number, denominator: number): opsi <number> => { if (denominator === 0) {return none; } else {return beberapa (numerator / denominator); }}; // Nilai pengembalian fungsi adalah OptionConst Hasil = Divide (2.0, 3.0); // Pola cocok untuk mengambil pesan valueConst = result.match ({ beberapa: (res) => `hasil: $ {res}`, tidak ada: 'tidak dapat membagi dengan 0',}); console.log (pesan); // "Hasil: 0,6666666666666666"
Result<T, E>
tipeHasil merupakan nilai yang sukses (OK) atau kegagalan (err).
Catatan
Dokumentasi Lengkap Di Sini: Hasilnya
impor {hasil, ok, err} dari '@thames/monads'; const getIndex = (values: string [], value: string): hasil <number, string> => { const index = values.indexOf (nilai); switch (index) {case -1: return err ('value not found'); default: return ok (index); }}; const values = ['a', 'b', 'c']; getIndex (nilai, 'b'); // ok (1) getIndex (nilai, 'z'); // err ("nilai tidak ditemukan")
Either<L, R>
Baik mewakili nilai yang kiri atau kanan. Ini adalah cara yang ampuh untuk menangani operasi yang dapat menghasilkan dua jenis hasil yang berbeda.
Catatan
Dokumentasi lengkap di sini: keduanya
import {baik, kiri, kanan} dari '@thames/monads'; const divide = (numerator: number, denominator: number): baik <string, number> => { if (denominator === 0) {return left ('tidak dapat membagi dengan 0'); } else {return right (numerator / denominator); }}; const result = divide (2.0, 3.0); const message = result.match ({ kiri: (err) => `error: $ {err}`, kanan: (res) => `hasil: $ {res}`,}); console.log (pesan); // "Hasil: 0,6666666666666666"