技能 fp-ts-pragmatic
📦

fp-ts-pragmatic

安全

通过实用函数式编程模式掌握 fp-ts

在 TypeScript 中学习函数式编程,无需学术负担。本指南专注于 fp-ts 模式中带来 80% 实际价值的 20% 核心内容。

支持: Claude Codex Code(CC)
🥉 73 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“fp-ts-pragmatic”。 将嵌套 null 检查转换为 fp-ts Option

预期结果:

使用 pipe 配合 O.fromNullable 和 O.flatMap 链接可空属性,当任何步骤返回 none 时使用 O.getOrElse 返回默认值

正在使用“fp-ts-pragmatic”。 无需 try-catch 处理 API 错误

预期结果:

返回 Either 类型,其中 Left 包含错误信息,Right 包含成功值,允许在调用处进行显式错误处理

正在使用“fp-ts-pragmatic”。 链接多个转换

预期结果:

使用 pipe 创建从左到右的可读数据流,每个函数接收上一步的输出,无需中间变量

安全审计

安全
v1 • 2/25/2026

This skill is documentation-only (SKILL.md) teaching fp-ts functional programming patterns. All 86 static findings are false positives - the scanner incorrectly treated Markdown code examples as executable code. Backticks are documentation delimiters, not shell commands. No actual network calls, external commands, or cryptographic operations exist in this skill.

1
已扫描文件
599
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
87
规范符合性

你能构建什么

采用 fp-ts 的 TypeScript 开发者

学习实用的 fp-ts 模式来处理错误、可空值和异步操作,无需深入学术性函数式编程概念。

代码重构辅助

获取重构指导,将带有嵌套回调和 null 检查的命令式代码转换为使用 pipe、Option 和 Either 的简洁函数式管道。

团队函数式模式入职培训

使用实用示例和可读性指南向团队介绍函数式编程概念,避免用术语让他们感到困惑。

试试这些提示

将 null 检查转换为 Option
我有这段包含嵌套 null 检查的代码。请展示如何使用 fp-ts Option 类型重构它:[粘贴代码]
使用 TaskEither 处理异步错误
我需要链接这些可能失败的异步操作。请展示如何使用 fp-ts TaskEither 无需 try-catch 来处理错误:[描述操作]
将回调地狱重构为 pipe
这段代码嵌套层级过深。请使用 pipe 和 fp-ts 模式重构以提高可读性:[粘贴代码]
构建验证管道
使用 fp-ts Either 创建验证函数,为该数据结构收集所有验证错误:[描述数据和规则]

最佳实践

  • 当有 3 个以上转换时使用 pipe - 按顺序展示数据流可提高可读性
  • 对于预期会失败的情况,优先使用 Either 而非抛出异常 - 这使错误处理在类型中更加明确
  • 选择可读性而非炫技 - 如果初级开发者无法理解代码,请使用更简单的模式

避免

  • 当可选链 (?.) 可用时对简单 null 检查使用 fp-ts - 增加不必要的复杂性
  • 创建深度嵌套的函数式组合,比命令式代码更难阅读
  • 在没有适当入职培训的情况下,向没有函数式编程经验的团队引入 fp-ts

常见问题

我需要使用范畴论才能使用 fp-ts 吗?
不需要。本指南专注于实用模式,避免学术术语。无需理解 Monad 或 Functor 即可有效使用 Option、Either 和 pipe。
什么时候不应该使用 fp-ts?
对于简单 null 检查(使用可选链)、性能关键代码(命令式更快)或团队缺乏 FP 经验且无法进行入职培训时,请跳过 fp-ts。
fp-ts 是否与现有 TypeScript 代码兼容?
可以。你可以渐进式采用 fp-ts。从使用 Option 处理可空值和 Either 处理错误开始,然后随着团队熟悉程度扩展使用范围。
map 和 flatMap 有什么区别?
使用 map 转换容器内的值。当转换本身可能失败并返回相同容器类型时,使用 flatMap。
fp-ts 是否支持 async/await?
可以。TaskEither 处理可能失败的异步操作。它封装 Promise 并与 Either 集成以实现一致的错误处理。
如何处理多个验证错误?
使用 Applicative 验证(基础内容未涉及)来收集所有错误,而不是在第一个错误处停止。这是掌握 Either 后值得探索的高级主题。

开发者详情

文件结构

📄 SKILL.md