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 - 代码草稿残留
它更偏语法卫生
这类问题通常不复杂,但如果漏过去,阅读体验和排障成本会很差。
参考信息
- TSConfig
allowUnusedLabels: https://www.typescriptlang.org/tsconfig/allowUnusedLabels.html