monads
1.0.0
Wenn Sie dieses Repo verwenden, spiele es
Inspiriert von Rost
Null -Abhängigkeiten • Leichtes Gewicht • Funktional
npm install @thames/monaden
Option<T>
TypDie Option stellt einen optionalen Wert dar: Jede Option ist entweder einige und enthält einen oder keinen Wert und nicht.
Notiz
Vollständige Dokumentation hier: Option
{Option importieren, einige, keine} aus '@thames/monads'; const Divide = (Zähler: Nummer, Nenner: Nummer): Option <numme> => { if (nenner === 0) {return keine; } else {return einige (Zähler / Nenner); }}; // Der Rückgabewert der Funktion ist ein OptionConst -Ergebnis = Divide (2.0, 3.0); // Musterübereinstimmung, um die ValuEConst Message = result.match ({{{{{{{ Einige: (res) => `Ergebnis: $ {res}`,, keine: 'kann nicht durch 0',}); console.log (meldung); // "Ergebnis: 0,6666666666666666"
Result<T, E>
TypDas Ergebnis stellt einen Wert dar, der entweder ein Erfolg (OK) oder ein Fehler (ERR) ist.
Notiz
Vollständige Dokumentation hier: Ergebnis
Importieren {Ergebnis, OK, err} aus '@thames/monaden'; const getIndex = (Werte: String [], Wert: String): Ergebnis <Nummer, String> => { const index = values.indexof (Wert); Switch (index) {case -1: return err ('Wert nicht gefunden'); Standard: return OK (Index); }}; const values = ['a', 'b', 'c']; getIndex (Werte, 'B'); // ok (1) getIndex (Werte, 'z'); // err ("Wert nicht gefunden")
Either<L, R>
TypEntweder ist ein Wert, der entweder links oder rechts ist. Es ist eine leistungsstarke Möglichkeit, Operationen zu behandeln, die zu zwei deutlich unterschiedlichen Ergebnissen führen können.
Notiz
Vollständige Dokumentation hier: entweder
Importieren {entweder links, rechts} aus '@thames/monaden'; const Divide = (Zähler: Nummer, Nenner: Nummer): Entweder <String, Nummer> => { if (nenner === 0) {return links ('kann nicht durch 0'); } else {return rechts (Zähler / Nenner); }}; const result = divide (2.0, 3.0); const message = result.match ({{{{{{{{{ Links: (err) => `Fehler: $ {err}`,, rechts: (res) => `Ergebnis: $ {res}`,}); console.log (message); // "Ergebnis: 0,6666666666666666"