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の無効化コメントを使用することを検討してください。