TypeScript 中的 allowUnreachableCode

说明 allowUnreachableCode 如何控制 TypeScript 对可证明不可达代码给出建议、忽略或编译错误,以及它为什么更偏控制流卫生而不是类型规则。

#tech / dev #resource / typescript #type / concept #status / growing

[!info] related notes

TypeScript 中的 allowUnreachableCode

一句话定义

allowUnreachableCode 用来控制 TypeScript 如何对“语法上可证明不可达”的代码做诊断。

核心机制 / 工作原理

官方文档明确列出三种状态:

  • undefined:默认,给编辑器建议级警告
  • true:忽略不可达代码
  • false:把不可达代码升级成编译错误

并且特别强调:

  • 这里只讨论由于 JavaScript 语法本身可证明不可达的代码

例如:

function fn(n: number) {
  if (n > 5) {
    return true;
  } else {
    return false;
  }

  return true;
}

最后那条 return true 就属于可证明不可达。

最小例子 / 最小场景

{
  "compilerOptions": {
    "allowUnreachableCode": false
  }
}

这适合那些希望把明显死代码直接阻断掉的项目。

边界与易混淆点

它不等于复杂逻辑上的“理论不可达”

官方文档只针对:

  • 语法层面能直接证明的不可达代码

而不是所有业务逻辑上的不可能分支。

它是三态配置,不只是布尔心智

这一点很容易被忽略。

默认值 undefined 本身就意味着:

  • 编辑器里给建议,但不一定变成硬错误

它更偏控制流卫生

这个选项主要帮助清理死代码和不小心留下来的尾部分支,不是类型系统核心开关。

参考信息

创建于 2026/5/15 更新于 2026/5/27