You need to enable JavaScript to run this app. TypeScript开启noFallthroughCasesInSwitch后如何标记合法switch穿透
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript开启noFallthroughCasesInSwitch后如何标记合法switch穿透

TypeScript 有意switch穿透标记方案

问题场景

已开启noFallthroughCasesInSwitch编译配置后,自定义的fallthrough注释无法被TS识别,仍然抛出7029错误。

可用解决方案

  • 方案1:使用TS官方识别的标准穿透注释
    将注释放在需要穿透的case代码块的最后一行,紧挨着下一个case之前,推荐用单行// fallthrough写法即可,TS会自动识别为合法的有意穿透,不会报错。你之前的注释写法(带s后缀、放在case行或代码块开头)都无法被编译器识别。
    示例代码:
function getRandomInt(max: number) {
  return Math.floor(Math.random() * max);
}

switch(getRandomInt(3)) {
  case 1:
    console.log(1);
    // fallthrough
  case 2:
    console.log(2);
    break;
}
  • 方案2:局部忽略错误(兼容老版本TS)
    如果用上述注释仍然报错,可在报错的case行上方添加单条错误忽略注释,明确告知编译器此处错误为有意忽略:
function getRandomInt(max: number) {
  return Math.floor(Math.random() * max);
}

switch(getRandomInt(3)) {
  // @ts-expect-error 此处为有意编写的switch穿透逻辑
  case 1:
    console.log(1);
  case 2:
    console.log(2);
    break;
}

注意:不推荐使用// @ts-ignore,@ts-expect-error会明确标记你预期此处存在错误,如果后续代码调整导致该错误消失,TS会反过来提示你删除多余的忽略注释,更易维护。

  • 方案3:代码重构(可选)
    如果没有必须保留穿透的特殊需求,可以直接合并case逻辑避免穿透,从根源消除报错:
switch(getRandomInt(3)) {
  case 1:
    console.log(1);
  case 2:
    console.log(2);
    break;
}

内容的提问来源于stack exchange,提问作者A-S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 04:51:03