4.1.2.1 和类型 (Sum Types) 你有没有在深夜调试一个看似简单的状态机时,突然发现——明明 字段只该是 、 或 三种取值,却在日志里反复刷出 、 ,甚至 ?更糟的是,TypeScript 的类型检查对此毫无反应,IDE 不报错,CI 通过,上线后却因一个未覆盖的分支导致支付流程静默跳过风控校验。 这不是偶然。这是和类型(Sum Types)被降级为字符串字面量联合类型后的典型溃败现场。 我们常把 当作和类型的等价物。它看起来像,编译器也接受它,但它的行为——尤其是当它走出定义模块、进入跨服务通信、持久化存储或第三方 SDK 集成时——早已背叛了和类型的本质契约:穷尽性(exhaustiveness)与排他性(disjointness)。 今天,我不讲理论。