Effect catchFilter 与 Filter:可组合的错误匹配与提取
讲清 Effect.catchFilter 与 Filter 模块:用可组合的 Filter 同时完成匹配与提取,保留未命中错误,并对比 catchTag、catchIf,附带 fromPredicate 收窄类型与实际不符的坑。
共 19 篇文章带有这个标签。
讲清 Effect.catchFilter 与 Filter 模块:用可组合的 Filter 同时完成匹配与提取,保留未命中错误,并对比 catchTag、catchIf,附带 fromPredicate 收窄类型与实际不符的坑。
用 catchReason、catchReasons、unwrapReason 处理 AiError、HttpClientError 这类带嵌套 reason 的错误,对比手写二级 switch 与 catchTags,并讲清残余类型的坑。
用 effect/cli 的 Command、Flag、Argument 写类型安全的命令行:Schema 校验、父命令共享参数、子命令读取父参数、示例与别名、补全脚本和交互式 Prompt,全部在 4.0.5 下实测,并说明它仍是 unstable。
Context.Reference 是带默认值的服务键,读取不进 R,局部覆盖不外泄,取代了 v3 的 FiberRef。本文讲 References 内置项,以及 feature flag、per-request 配置的写法与边界。
讲解 ErrorReporter 与 withErrorReporting:用 ignore、severity、attributes 标注错误统一上报 Cause,defectsOnly 的真实语义与默认 Info 陷阱,unstable。
ExecutionPlan 把「先试 A,重试两次,不行换 B,最后本地兜底」写成一个值:每步提供不同的 Layer,可配 attempts、schedule、while,用 onEvent 观察。unstable 特性,附流式场景的坑。
拆开 Effect.fn 的三种形态:span 的 attributes 与 kind、Effect.fn.Return、后处理参数为何取代 .pipe,以及库代码和热路径怎么选 fnUntraced 与 fnUntracedEager。
v4 的 fork 系列把子 fiber 挂在哪里、何时被中断,以及 startImmediately 与 uninterruptible 选项。用 PubSub 订阅丢消息复现 fork 后下一个 tick 才执行的竞态,并给出解法。
v4 把 MemoMap 在嵌套的 provide 之间共享,v3 的重复构建坑变成了隐式复用。用计数器 Layer 实测嵌套、兄弟、fresh 与 local:true 的构建次数,并说明为什么仍要组合后只 provide 一次。
按「有没有 key、要不要共享、要不要刷新」梳理 Effect 4.0.5 的五个资源 API:LayerMap 做多租户 Layer 缓存,RcMap 按 key 共享,Pool 做连接池,LayerRef 与 Resource 负责刷新,并标明稳定性。
讲清 Effect v4 新增的 Optic 模块:Iso、Lens、Prism、Traversal 的层级与用法,和展开运算符、Schema 的分工,以及 check 在写回时并不校验的细节。
Effect v4 内置基于 Schema 的属性测试:Arbitrary 派生生成器,checkEffect 提供可复现 seed 与结构化 shrinking,配合 it.prop 与 TestSchema,无需 fast-check。
讲清 RateLimiter 的两种算法、delay 与 fail、内存与 Redis store,对比 Semaphore 和 Schedule,并介绍 PartitionedSemaphore 与 Latch 的用法。
用计数器实测 Request.Class、RequestResolver、setDelay、withCache 如何把 N+1 查询合并成批,并介绍 Cache.makeWith 动态 TTL 与 ScopedCache 的惰性过期。
用 Effect v4 的 Schema.TaggedUnion 与 toTaggedUnion 定义判别联合,自带 match、guards 和穷尽检查;对比 Class、Opaque 与 Union 的取舍,并用它写出一个订单状态机。
Effect v4 的 Schema 一份定义可派生 Standard Schema、JSON 编解码器、JSON Schema、Equivalence、Formatter 与 JSON Patch,并讲清默认值的坑。
说明 Effect 4.0.5 如何用 JSDoc 的 @stability 标签而非 effect/unstable 路径标注 API 稳定性,如何用语言服务诊断管理 unstable 用法,并附可复现的扫描脚本和 4.0.5 里仍是 unstable 的模块清单。
v4 里 STM 被 Effect.tx 加一组 Tx 数据结构取代。本文讲嵌套事务如何合并、txRetry 如何阻塞重试、怎样原子地改多个 TxRef,以及它和 Ref、Semaphore 的取舍,附实测踩坑。
讲 Effect 在 Cloudflare Workers 上的实践:模块级 ManagedRuntime、每请求取 context、共享 memo map,避免重复 provide Layer 与跨请求共享状态;并把来自 GitHub issue 的两个已知问题单独标注为未复现。