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"