标签:Effect

共 169 篇文章带有这个标签。

Effect 怎么把 N+1 查询合并成一批?

用 Request.Class、RequestResolver 和 Effect.request,调用方仍然一个 id 查一次,底层合并成一次查询。附带 setDelay、batchN、makeGrouped、withCache 的用法。

Effect 资源清理的三种写法怎么选?

Effect 里登记资源清理有三种写法。这篇讲它们各自适合的场景,以及怎么看类型里的 Scope 判断资源有没有人负责。

acquireRelease 的获取和释放能被中断吗?

Effect.acquireRelease 的获取步骤默认不可中断,释放步骤也不会被中断,释放还不能有可预期的失败。这篇讲这些保护是什么、为什么这样设计。

Effect 的 Schedule.cron 怎么用,怎么测?

Schedule.cron 接受五段 cron 表达式,算出距离下一次触发还要等多久。它读的是 Clock,所以能被 TestClock 驱动,不用真等到整点。

effect-scan 怎么把 Effect 约定变成会失败的检查?

把「业务代码不写 try/catch、run 只在入口」这类约定变成退出码非 0 的命令,关键在三个设计:一个规则一个 owner、合同与生成物分离、信号与阻断分开。以 @yansircc/effect-scan 为例。

Schema.Class、Opaque 和 TaggedUnion 怎么选?

Effect v4 里给结构加身份有三种工具,运行时行为差别很大:TaggedClass 的守卫是 instanceof,Opaque 默认不是名义类型且只能包 Struct。这篇讲清各自的边界和选择标准。

怎么用 Schema.TaggedUnion 写订单状态机?

状态和事件各用一个 TaggedUnion,转换写成 match 加 guards 的纯函数,非法转换变成显式失败值。这篇给出完整代码,并说明同一份定义怎么导出落库格式和 JSON Schema。

toTaggedUnion 怎么给已有联合加 match 和 guards?

已经有成员 Schema,或者判别字段不叫 _tag,就用 Schema.toTaggedUnion 给普通 Union 加上 match、guards 和 discriminants。这篇讲用法、判别值重复和嵌套联合的行为。

withDecodingDefaultKey 的默认值有哪些坑?

withDecodingDefaultKey 的默认值是产出 Encoded 值的 Effect,不是 thunk,也不是 Type 值,而且每次解码都会重新求值。这篇把四个坑和对应写法讲清楚。

Effect Schema 解码后为什么少了字段?

Schema.Struct 解码时默认剔除未声明的字段。想严格拒绝多余字段,解码时传入 onExcessProperty 选项;想保留,就在 Schema 里声明。

Effect Schema 的 brand 怎么防止 ID 传错?

用 Schema.brand 给形状相同的值不同的类型身份,让用户 ID 不能当订单 ID 传;以及 brand 叠在校验上、它的保证边界和适用范围。

Effect Schema 的 transform 怎么写自定义转换?

用 Schema.decodeTo 搭配 SchemaTransformation.transform,给出解码与编码两个方向,把外部表示转成内部类型;并说明转换里为什么不该做 IO。