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 本身就意味着:
- 编辑器里给建议,但不一定变成硬错误
它更偏控制流卫生
这个选项主要帮助清理死代码和不小心留下来的尾部分支,不是类型系统核心开关。
参考信息
- TSConfig
allowUnreachableCode: https://www.typescriptlang.org/tsconfig/allowUnreachableCode.html