跳到主要内容

Monad Function

本模块用轻量 Option(Some / None)演示「可失败计算」的组合:map / flatMap 避免层层判空,失败时短路。

项目中的实现

  • 源码: src/monadFunction.ts
  • 导出: Option(类型)、somenonemapOptionflatMapOptiongetOptionOrElse

各函数示例

some

import { some } from 'wssf-kage-js';

some(42); // => { kind: 'some', value: 42 }

none

import { none } from 'wssf-kage-js';

none(); // => { kind: 'none' }

mapOption

import { some, mapOption } from 'wssf-kage-js';

mapOption(some(2), (n) => n * 2); // => some(4)

flatMapOption

import { some, none, flatMapOption } from 'wssf-kage-js';

flatMapOption(some('42'), (s) => (/^\d+$/.test(s) ? some(Number(s)) : none())));

getOptionOrElse

import { none, getOptionOrElse } from 'wssf-kage-js';

getOptionOrElse(none(), 0); // => 0

什么时候优先用

  • 多层可能为空的链路,希望比深层 if 更线性的表达
  • 教学或小型工具库场景;大型项目可评估 fp-ts 等完整方案