[JavaScript] アンダースコア(アンダーバー)の引数でESLintがエラー判定しないようにする方法

JavaScriptのメソッドなどの引数で「定義はするが特に使う予定のないもの」についてはアンダースコアで表現することがある。次のように。

const f = _ => console.log("Hello, Mocchiri!");

こうすることで、ソフトウェアをチーム開発するときや、保守するときに「このメソッドではこの引数は使わなくてOKなんだな」という認識を担当者間で共有しながら作業が勧められる。

ところが、JavaScriptの文法チェッカーであるESLintは既定でこれを許してくれない。

次のような感じの文法エラーとして認識されてしまう。

error: '_' is defined but never used (no-unused-vars) at src/hogehoge.js:170:11:
  169 | const f = _ => console.log("Hello, Mocchiri!");
      |           ^

さすがにアンダースコアの引数はOKにして欲しいよ、ということでESLintの設定ファイル eslintrc.js の文法チェックルールに次のように追記した。

module.exports = {
  /* 中略 */
  rules: {
    "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
    "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
    "no-unused-vars": ["error", { argsIgnorePattern: "^_$" }],    // ←この行を追記
  },
  /* 中略 */
};

追記した行の意味は次の通り。目的に応じて微調整するとよい。

記載内容意味
no-unused-vars使われていない変数に関するルール設定
errorエラー判定する
argsIgnorePattern例外とする(エラーにしない)引数名のパターン
^_$アンダースコアだけの変数名(正規表現)

これでESLintがアンダースコアの引数を無視してくれるようになった。

コメントする