如何让 TypeScript 的联合类型在 switch 中自动穷尽检查
在维护一个订单状态组件时,我经常会写出这样一段逻辑:根据后端返回的 status 字段渲染不同按钮。起初用 if/else 判断,后来改成 switch,但某天产品加了一个新状态 refunding,我只在接口里补了类型,页面却悄无声息地漏掉了这个分支。TypeScript 并没有报错,因为 switch 默认允许不处理所有情况。这种问题在迭代频繁的业务里很常见,尤其当联合类型由后端接口或状态机动态扩展时,遗漏分支往往要到测试甚至线上才暴露。要解决它,核心不是靠人工 code review,而是让编译器强制检查每个成员是否都被处理。这篇文章会从 never 类型入手,逐步讲清楚如何在 swit...