no-misused-new
newとconstructorの有効な定義を強制します。
✅
拡張 "plugin:@typescript-eslint/recommended" 内の ESLint設定 このルールを有効にします。
JavaScriptのクラスは、クラスのインスタンスが新しく作成されるときに実行されるconstructorメソッドを定義できます。TypeScriptでは、静的クラスオブジェクトを記述するインターフェースでnew()メソッドを定義できます(ただし、これは実際のコードではめったに使用されません)。JavaScriptのクラスやTypeScriptのインターフェースを初めて使用する開発者は、constructorやnewをいつ使用すべきか混乱することがあります。
このルールは、クラスがnewという名前のメソッドを定義したり、インターフェースがconstructorという名前のメソッドを定義した場合に報告します。
.eslintrc.cjs
module.exports = {
  "rules": {
    "@typescript-eslint/no-misused-new": "error"
  }
};
プレイグラウンドでこのルールを試す ↗
例
- ❌ 不正
- ✅ 正しい
declare class C {
  new(): C;
}
interface I {
  new (): I;
  constructor(): void;
}
declare class C {
  constructor();
}
interface I {
  new (): C;
}
オプション
このルールは設定できません。
いつ使用しないか
意図的にnewメソッドを持つクラスが必要で、コードを使用する誰もがそれをコンストラクターと間違えないと確信している場合は、このルールが必要ないかもしれません。このルールを完全に無効にする代わりに、特定の状況でESLintの無効化コメントを使用することを検討してください。