用途:在 TypeScript 中处理可辨识联合(tagged union)时,确保 switch 语句覆盖所有分支。当联合类型新增变体时,编译器能自动标出所有需要更新的 switch,把遗漏错误从运行时提前到编译期。
主要能力:核心模式是定义辅助函数 assertUnreachable(value: never): never,在 switch 的 default 分支调用它。若所有分支都已处理,剩余类型为 never,调用合法;若遗漏分支,剩余类型不是 never,而除 never 外没有类型可赋值给 never,于是产生类型错误。也可用显式返回类型配合 strictNullChecks 强制穷尽。
使用方式:为联合类型编写 switch,逐项处理各 case,在 default 中调用 assertUnreachable(union)。新增变体后,未处理的 switch 会报错,补上对应 case 即可消除。
适用场景:处理 tagged union 全部分支、向可辨识联合添加新变体、编写必须完整的 switch、希望在遗漏分支时获得编译期错误。
限制:若有意忽略某些分支,不要加 assertUnreachable;返回类型方式需显式返回类型、所有分支都返回且启用 strictNullChecks。资料未提供安装命令、平台或收费信息。