TypeScript 中的 allowUnusedLabels

说明 allowUnusedLabels 如何控制 TypeScript 对未使用标签的诊断,以及它为什么经常帮助发现把对象字面量误写成标签语句的错误。

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

[!info] related notes

TypeScript 中的 allowUnusedLabels

一句话定义

allowUnusedLabels 用来控制 TypeScript 如何对未使用标签语句做诊断。

核心机制 / 工作原理

官方文档同样给出三种状态:

  • undefined:默认,给编辑器建议级警告
  • true:忽略未使用标签
  • false:把未使用标签升级成编译错误

官方文档还特别强调了一个常见真实场景:

  • JavaScript 里 label 很少见
  • 出现未使用 label 往往说明你本来想写的是对象字面量

例如:

function verifyAge(age: number) {
  if (age > 18) {
    verified: true;
  }
}

这里的 verified: 实际会被理解成 label,而不是对象属性。

最小例子 / 最小场景

{
  "compilerOptions": {
    "allowUnusedLabels": false
  }
}

这很适合用来提前暴露:

  • 误写语法
  • 被遗忘的 label
  • 控制流草稿残留

边界与易混淆点

它也是三态配置

allowUnreachableCode 一样,默认的 undefined 不等于“完全不开启”,而是:

  • 以建议级形式出现

它抓到的 often 不是“真的在用 label 的高级写法”

更多时候,它抓到的是:

  • 误写对象字面量
  • 少写 return
  • 代码草稿残留

它更偏语法卫生

这类问题通常不复杂,但如果漏过去,阅读体验和排障成本会很差。

参考信息

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