monads
1.0.0
Si usa este repositorio, estrellalo
Inspirado por el óxido
Dependencias cero • Ligeros • Funcional
NPM install @Thames/Mónadas
Option<T>
tipoLa opción representa un valor opcional: cada opción es algo y contiene un valor, o ninguno, y no lo hace.
Nota
Documentación completa aquí: Opción
import {opción, algunos, ninguno} de '@thames/monads'; const divide = (numerator: number, denominator: number): opción <número> => { if (denominator === 0) {return Ninguno; } else {return some (numerator / denominator); }}; // El valor de retorno de la función es una opción de result = divide (2.0, 3.0); // coincidencia de patrón para recuperar el mensaje valueConst = result.match ({ Algunos: (res) => `resultado: $ {res}`, Ninguno: 'No se puede dividir por 0',}); console.log (mensaje); // "resultado: 0.66666666666666666"
Result<T, E>
tipoEl resultado representa un valor que es un éxito (OK) o una falla (err).
Nota
Documentación completa aquí: Resultado
import {resultado, ok, err} de '@thames/monads'; const getIndex = (valores: string [], valor: string): resultado <número, string> => { const index = value.IndexOf (valor); switch (index) {case -1: return err ('valor no encontrado'); default: return ok (índice); }}; const valas = ['a', 'b', 'c']; getIndex (valores, 'b'); // ok (1) getIndex (valores, 'z'); // err ("valor no encontrado")
Either<L, R>
O representa un valor que es izquierdo o derecho. Es una forma poderosa de manejar las operaciones que pueden dar lugar a dos tipos de resultados claramente diferentes.
Nota
Documentación completa aquí: ya sea
import {o, izquierda, derecha} de '@thames/monads'; const divide = (numerator: number, denominator: number): o <string, number> => { if (denominator === 0) {return a la izquierda ('no se puede dividir por 0'); } else {return Right (numerator / denominator); }}; const divide = divide (2.0, 3.0); const mensaje = resultado.match ({ izquierda: (err) => `error: $ {err}`, Derecho: (res) => `resultado: $ {res}`,}); console.log (mensaje); // "resultado: 0.66666666666666666"