用途:这是一份以“务实”为原则的函数式编程入门指南,帮助开发者用最少的概念获得实际收益。核心原则是:如果函数式编程让代码更难读,就不要用;FP 是工具而非信仰。
主要能力:围绕 fp-ts 的五个核心模式展开。一、pipe 用于按阅读顺序串联多个操作,替代嵌套调用或中间变量,适用于 3 个以上转换;一两个操作时直接用即可。二、Option 用 fromNullable、flatMap、getOrElse 等组合处理可能缺失的值,替代层层 null 判断。三、Either 把预期内的失败作为值返回,用 right/left 表示成功与失败,用 isRight 判断,替代抛异常。四、map 在不拆包的情况下转换容器内的值,Option、Either、Array 概念一致。五、flatMap 用于串联可能失败的步骤,任一步失败则整体失败。
使用方式:文中以 before/after 代码对照展示导入方式,如从 fp-ts/function 导入 pipe,从 fp-ts/Option、fp-ts/Either、fp-ts/Array 分别导入对应模块;并以 parseAge、getUserCity、getValidEmail 等示例演示组合写法。另提供速查表,将需求映射到具体函数,如 O.fromNullable、O.getOrElse、O.map、O.flatMap、E.right、E.left、E.tryCatch、E.fold、pipe。
适用场景与限制:适合希望降低 null 检查、显式化错误、改善异步链式处理的 TypeScript 项目。文档明确列出了不应使用 FP 的场景:简单空值检查可用可选链 user?.address?.city ?? 'Unknown';需要提前退出或复杂逻辑的循环用 for 更清晰;性能敏感的热路径采用命令式写法更快,因为 fp-ts 会产生中间结构;团队不熟悉 FP 时不要强推。同时建议以“初级开发者能否看懂”为可读性判断标准,避免过度抽象,先掌握基础再考虑 TaskEither、Validation、Reader、Do 记法等进阶内容。官方文本中未提供收费、平台或效果数据。