monads
1.0.0
如果您使用此存储库,请播放
受锈的启发
零依赖项•轻量级•功能
NPM安装 @Thames/Monads
Option<T>
类型选项代表可选值:每个选项都是某些选项,并且包含一个值,或者不包含一个,并且不包含。
笔记
完整文档此处:选项
导入{option,某些,none}来自'@thames/monads'; const divide =(numerator:number,number,denoMinator:number):选项<数字> => { if(denoMinator === 0){返回none; } else {返回一些(Numerator / denominator); }}; //函数的返回值是一个optionConconst = divide(2.0,3.0); //模式匹配以检索ValueConst messages = resteg.match({{{ 有些:(res)=>`结果:$ {res}`, 无:'不能除以0',}); console.log(message); //“结果:0.666666666666666”
Result<T, E>
类型结果代表成功(确定)或故障(ERR)的值。
笔记
这里的完整文档:结果
导入{结果,好的,err}来自'@thames/monads'; const getIndex =(values:string [],value:string):result <number,string> => { const index = values.indexof(value); switch(index){案例-1:返回err('value找不到');默认值:return ok(index); }}; const values = ['a','b','c']; getIndex(values,'b'); // ok(1)getIndex(values,'z'); // err(“未找到值”)
Either<L, R>
类型要么代表左右的值。这是处理操作的强大方法,可以导致两种截然不同的结果。
笔记
完整的文档在这里:要么
import {既有,左,右}来自'@thames/monads'; const divide =(numerator:number:number,denoMinator:number):<string,number> => {{ if(denoMinator === 0){返回左('不能除以0'); } else {return right(Numerator / denominator); }}; const结果= divide(2.0,3.0); const message = resteg.match({{ 左:(err)=>`错误:$ {err}`, 对:( res)=>`结果:$ {res}`,}); console.log(message); //“结果:0.666666666666666”