用途:把 Effect 当作轻量级 Promise 工具,稳健地运行异步操作。每个 effect 自包含(无 services、无 layers、无依赖注入),在边界处通过 Effect.runPromise 解析为普通 Promise。整体形态为:Effect.fn 或 Effect.gen → pipe 操作符 → Effect.runPromise。
主要能力:用 Effect.tryPromise 包装 Promise(避免 Effect.promise 吞掉错误);用 Effect.fn("name") 定义函数;用 Data.TaggedError 定义带 _tag 的错误;用 catchTag/catchTags 按标签捕获并保留类型收窄;用 orElse、orElseSucceed、orElseFail、firstSuccessOf 做回退;用 Effect.timeout/timeoutFail/timeoutTo 处理超时;用 Effect.retry 配合 Schedule 实现固定次数或指数退避重试,并可按错误类型重试;用 cachedWithTTL、cachedInvalidateWithTTL、cachedFunction 做缓存与按参数记忆化;用 Effect.all 的 concurrency 选项控制并发,用 race/raceAll 竞速;用 Match.value/Match.type 配合 Match.tag 做模式匹配;用 withSpan、annotateCurrentSpan、log 做追踪与日志。
使用方式:按“Effect.fn 或 Effect.gen → pipe 操作符 → Effect.runPromise”的结构编写,在调用点用 await Effect.runPromise(...) 得到普通 Promise。
限制与规则:不使用 services 或 layers,保持 R = never;始终用 Effect.fn 命名函数;每个不同失败用独立 TaggedError;始终用 Effect.tryPromise;优先 catchTag 而非 catchAll;外部调用应加超时;只在最外层调用 Effect.runPromise。资料未提供安装命令、版本要求或收费信息。