TypeScript 中的 noUnusedParameters

说明 noUnusedParameters 为什么会对未使用的函数参数报错,以及它为何允许以下划线开头的参数作为显式忽略约定。

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

[!info] related notes

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 并不意味着代码错,而是意味着:

  • 签名设计过宽
  • 或当前实现只是刻意忽略某个参数

参考信息

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