SuperAPI AI 工具集

typescript-effect-ts

编程与开发

查看项目

更新于 10-16 06:45

技能介绍

用途:本技能用于在 TypeScript 中使用 Effect-TS 库构建健壮、类型安全的应用程序。Effect 提供函数式效果系统,将错误、依赖与资源需求编码进类型,核心类型为 Effect<Success, Error, Requirements>,表示一个可能成功产出 Success、可能以 Error 类型失败、并需要 Requirements 上下文才能运行的计算。

主要能力:类型化错误(不同于 Promise 丢失错误类型信息,Effect 在类型系统中追踪错误);依赖注入(用 Context.Tag 声明服务,通过 Layer 提供,使依赖在类型中可见);资源安全(Effect.acquireRelease 保证即使失败或中断也会清理资源);可组合性(用 pipe、Effect.gen 生成器以及 Effect.all、Effect.flatMap 等组合子组合效果)。此外涵盖 Schema 数据校验(encode/decode)、并发控制、重试与超时等常见模式。

必要用法:用 Effect.succeed、Effect.sync、Effect.fail、Effect.try、Effect.tryPromise、Effect.fromNullable 创建效果;用 Effect.runSync、Effect.runPromise、Effect.runSyncExit、Effect.runPromiseExit 在应用边界运行效果;用 Effect.gen(function* () { ... yield* ... }) 编写看似异步但完全类型安全的顺序流程;用带 _tag 的错误类配合 Effect.catchTag 精确处理特定错误,用 Effect.catchAll 处理全部错误;用 Context.Tag 定义服务接口、Layer 提供服务实现,并用 Effect.provide 注入;用 Effect.acquireRelease 配合 Effect.scoped 管理需要清理的资源;用 Effect.all 的 concurrency 选项控制顺序或并行执行;用 Schedule.exponential、Schedule.jittered、Schedule.recurs 实现退避重试,用 Effect.timeout 与 Duration 设置超时。

适用场景与指导原则:适合需要在类型层面显式表达错误与依赖的 TypeScript 项目,可与 Drizzle ORM、Fastify 等集成,也建立于 Option/Either 等函数式概念之上。建议复杂流程用 Effect.gen,错误类加 _tag 以便 catchTag,服务用 Context.Tag 定义并用 Layer 组合,外部数据用 Schema 校验,资源用 acquireRelease 限定作用域,并把 runPromise/runSync 留在应用边界调用。

限制:资料未提供该技能的安装命令、收费方式、平台支持范围或性能数据,暂未提供相关信息;使用前需自行确认 Effect-TS 库的获取与版本要求。