
关于
Option 类型快速参考。适用于处理可空值、可选数据或希望避免空值检查的场景
name: fp-option-ref description: Option 类型快速参考。当用户需要处理可空值、可选数据或想避免空值检查时使用。 risk: unknown source: community version: 1.0.0 tags: [fp-ts, option, nullable, maybe, quick-reference]
Option 快速参考
Option = 可能不存在的值。Some(value) 或 None。
何时使用
- 你需要一个关于可空或可选值的 fp-ts 快速参考。
- 任务涉及消除空值检查、安全属性访问或使用
Option进行可选链式调用。 - 你需要一个简短的参考卡片而非完整的迁移指南。
创建
import * as O from 'fp-ts/Option'
O.some(5) // Some(5)
O.none // None
O.fromNullable(x) // null/undefined → None, else Some(x)
O.fromPredicate(x > 0)(x) // false → None, true → Some(x)
转换
O.map(fn) // Transform inner value
O.flatMap(fn) // Chain Options (fn returns Option)
O.filter(predicate) // None if predicate false
提取
O.getOrElse(() => default) // Get value or default
O.toNullable(opt) // Back to T | null
O.toUndefined(opt) // Back to T | undefined
O.match(onNone, onSome) // Pattern match
常见模式
import { pipe } from 'fp-ts/function'
import * as O from 'fp-ts/Option'
// Safe property access
pipe(
O.fromNullable(user),
O.map(u => u.profile),
O.flatMap(p => O.fromNullable(p.avatar)),
O.getOrElse(() => '/default-avatar.png')
)
// Array first element
import * as A from 'fp-ts/Array'
pipe(
users,
A.head, // Option<User>
O.map(u => u.name),
O.getOrElse(() => 'No users')
)
与 Nullable 对比
// ❌ 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。
限制
- 仅在任务明确匹配上述描述的范围时使用此技能。
- 不要将输出视为特定环境验证、测试或专家审查的替代品。
- 如果缺少必要的输入、权限、安全边界或成功标准,请停下来要求澄清。
兼容工具
Claude CodeCursor
标签
后端开发
