← [ BACK_TO_NOTES ]

TypeScript 中的 noFallthroughCasesInSwitch

说明 noFallthroughCasesInSwitch 为什么会阻止 switch 的意外贯穿,以及它如何把遗漏 break/return/throw 的分支写法提前变成编译错误。

#dev #typescript #concept #growing

[!info] related notes

TypeScript 中的 noFallthroughCasesInSwitch

一句话定义

noFallthroughCasesInSwitch 会对 switch 里的意外 case 贯穿报错。

核心机制 / 工作原理

官方文档直接说明:

  • Report errors for fallthrough cases in switch statements

并明确了判定标准:

  • 非空的 case 分支需要以 break、return 或 throw 之类的显式终止结束

例如:

switch (a) {
  case 0:
    console.log("even");
  case 1:
    console.log("odd");
    break;
}

开启后,TypeScript 会直接指出:

  • case 0 发生了 fallthrough

最小例子 / 最小场景

{
  "compilerOptions": {
    "noFallthroughCasesInSwitch": true
  }
}

它最有价值的地方是:

  • 多分支状态机
  • reducer
  • 条件分支较密的业务逻辑

边界与易混淆点

它针对的是“意外贯穿”,不是所有连续 case 都非法

如果你的代码就是有意共享分支逻辑,通常需要把写法组织得更明确,而不是让一个非空 case 静默滑到下一个 case。

它更偏控制流质量,而不是类型语义

这个选项不改变类型推断本身,而是减少一类经典分支 bug。

它和 noImplicitReturns 经常一起出现

两者都在强化:

  • 分支结构是否完整
  • 控制流是否明确

参考信息

创建于 2026/5/15 更新于 2026/7/15
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本