monads
1.0.0
Si vous utilisez ce référentiel, jouez-le
Inspiré par la rouille
Zéro dépendances • Léger • fonctionnel
NPM Install @ Thames / Monades
Option<T>
TypeL'option représente une valeur facultative: chaque option est soit et contient une valeur, soit aucune, et ne le fait pas.
Note
Documentation complète ici: Option
import {option, certains, aucun} de '@ thames / monads'; const divide = (Numerator: Number, Denominator: Number): Option <nom> => { if (denominator === 0) {return nul; } else {return some (Numerator / Denominator); }}. certains: (res) => `Résultat: $ {res}`, Aucun: 'Impossible de diviser par 0',}); console.log (message); // "Résultat: 0,66666666666666666"
Result<T, E>
typeLe résultat représente une valeur qui est soit un succès (OK), soit un échec (ERR).
Note
Documentation complète ici: Résultat
import {result, ok, err} de '@ thames / monads'; const getindex = (valeurs: string [], valeur: string): result <nombre, string> => { const index = valeurs.indexof (valeur); switch (index) {case -1: return err ('valeur introuvable'); par défaut: return ok (index); }}; const valeurs = ['a', 'b', 'c']; getIndex (valeurs, 'b'); // ok (1) getIndex (valeurs, 'z'); // err ("valeur introuvable")
Either<L, R>
Soit représente une valeur qui est à gauche ou à droite. C'est un moyen puissant de gérer les opérations qui peuvent entraîner deux types de résultats distinctement différents.
Note
Documentation complète ici: soit
Importer {soit, à gauche, à droite} depuis '@ thames / monads'; const divide = (Numerator: Number, Denominator: Number): Soit <String, Number> => { if (denominator === 0) {return gauche ('ne peut diviser par 0'); } else {return reight (Numerator / Denominator); }}; const result = divide (2.0, 3.0); const message = result.match ({ gauche: (err) => `Erreur: $ {err}`, Droite: (res) => `Résultat: $ {res}`,}); console.log (message); // "Résultat: 0,66666666666666666"