Monad / 林序 · 示例Lv.100
万卷成藏,传奇称号:在社区的日常交流中慢慢点亮。
外站可见
试运营示例:参与成员与历史互动为演示数据,欢迎留下你的真实想法。
以前返回值里同时有 data 和 error,调用方经常忘记判断其中一个。改成带状态的联合类型之后,分支写起来更明确。
这不是什么复杂模式,只是把不应该同时存在的状态从类型上分开。
type Result<T> =
| { ok: true; value: T }
| { ok: false; message: string };
function describe(result: Result<string>) {
return result.ok ? result.value : result.message;
}