用途
fp-option-ref 是一份关于 fp-ts 中 Option 类型的快速参考,面向需要处理可空值、可选数据,或希望避免到处写 null 检查的开发者。Option 表示一个可能不存在的值,其两种形态为 Some(value) 与 None。
主要能力
该参考按操作类别整理了 Option 的常用函数:
- 创建:O.some(5) 得到 Some(5);O.none 表示 None;O.fromNullable(x) 在 x 为 null/undefined 时返回 None,否则返回 Some(x);O.fromPredicate(x > 0)(x) 在条件为 false 时返回 None,为 true 时返回 Some(x)。
- 转换:O.map(fn) 转换内部值;O.flatMap(fn) 用于串联返回 Option 的函数;O.filter(predicate) 在条件为 false 时返回 None。
- 提取:O.getOrElse(() => default) 获取值或默认值;O.toNullable(opt) 转回 T | null;O.toUndefined(opt) 转回 T | undefined;O.match(onNone, onSome) 进行模式匹配。
使用方式
参考中给出了常见模式示例,均基于 fp-ts 的 pipe 与模块导入:
安全属性访问:
import { pipe } from 'fp-ts/function'
import * as O from 'fp-ts/Option'
pipe(
O.fromNullable(user),
O.map(u => u.profile),
O.flatMap(p => O.fromNullable(p.avatar)),
O.getOrElse(() => '/default-avatar.png')
)
数组取首元素:
import * as A from 'fp-ts/Array'
pipe(
users,
A.head, // Option<User>
O.map(u => u.name),
O.getOrElse(() => 'No users')
)
与可空值写法的对比:
// ❌ Nullable - easy to forget checks
const name = user?.profile?.name ?? 'Guest'
// ✅ Option - explicit, composable
pipe(
O.fromNullable(user),
O.flatMap(u => O.fromNullable(u.profile)),
O.map(p => p.name),
O.getOrElse(() => 'Guest')
)
适用场景
当需要对可选值进行链式操作时,适合使用 Option。典型场景包括安全访问可能缺失的对象属性、从数组中安全取出可能不存在的元素,以及以显式、可组合的方式替代散落的 null 检查。
限制
资料未提供该技能的安装方式、运行环境要求、版本兼容性、收费或价格信息,暂未提供。