SuperAPI AI 工具集

requirements management

通用与其它

查看项目

更新于 10-16 12:47

技能介绍

用途:介绍 Effect 框架中的需求管理(Requirements Management),即 Effect<Success, Error, Requirements> 第三个类型参数所表示的服务与依赖,采用基于 Context 和 Layer 的依赖注入系统。核心目的是可测试性:外部依赖(API 调用、数据库、文件系统、第三方 SDK)应包装进 Context.Tag 服务,测试时提供测试实现而不触达真实系统。

主要能力:用 Effect.Tag(推荐)或 Context.Tag 定义服务接口;用 Effect.gen 配合 yield* 获取服务;用 Layer.succeed、Layer.effect、Layer.scoped、Layer.function 构造层;用 Effect.provide、Effect.provideService 注入依赖;用 Layer.merge、Layer.provide、Layer.provideMerge 组合层;层默认记忆化,可用 Layer.fresh 取消;Effect 内置 Clock、Random 等默认服务,可用 TestClock.layer 覆盖。

使用方式:先定义服务与 Tag,再编写生产层(*Live)和测试层(*Test),自底向上组合(基础设施→仓库→服务),最后用 Effect.provide 提供完整层并 Effect.runPromise 运行。配合 @effect/vitest 的 layer 与 it.effect 编写测试,无状态服务用 Layer.succeed,有状态服务用 Layer.effect 配合 Ref;可结合 Arbitrary 做属性测试。

限制:资料仅给出 API 与模式说明,未提供版本要求、完整项目示例或收费信息。