TypeScript 中的 noUnusedParameters
说明 noUnusedParameters 为什么会对未使用的函数参数报错,以及它为何允许以下划线开头的参数作为显式忽略约定。
#tech / dev
#resource / typescript
#type / concept
#status / growing
[!info] related notes
- 所属 MOC: TypeScript MOC
- 配置入口: tsconfig 使用详解
- 并列概念: TypeScript 中的 noUnusedLocals, TypeScript 类型检查
TypeScript 中的 noUnusedParameters
一句话定义
noUnusedParameters 会对函数签名中声明但从未使用的参数报错。
核心机制 / 工作原理
官方文档定义很直接:
- Report errors on unused parameters in functions
例如:
const createDefaultKeyboard = (modelID: number) => {
const defaultModelID = 23;
return { type: "keyboard", modelID: defaultModelID };
};
开启后,TypeScript 会指出:
modelID声明了但没有被读取
最小例子 / 最小场景
{
"compilerOptions": {
"noUnusedParameters": true
}
}
它特别适合帮助你识别:
- 已经过时的 API 参数
- 实现和签名不同步
- callback 里其实不需要的参数位
边界与易混淆点
以下划线开头的参数会被豁免
官方文档明确说明:
- names starting with an underscore are exempt
例如:
const createDefaultKeyboard = (_modelID: number) => {
return { type: "keyboard" };
};
这相当于显式告诉团队:
- 这个参数签名上需要保留,但当前实现不使用它
它和 noUnusedLocals 是平行概念
- 一个看参数
- 一个看局部变量
它常和回调签名设计一起出现
很多时候 unused parameter 并不意味着代码错,而是意味着:
- 签名设计过宽
- 或当前实现只是刻意忽略某个参数
参考信息
- TSConfig
noUnusedParameters: https://www.typescriptlang.org/tsconfig/noUnusedParameters.html