不要な型引数を許可しない
デフォルト値と等しい型引数を許可しません。
🔒
拡張 "plugin:@typescript-eslint/strict-type-checked"
を ESLint設定 で有効にすると、このルールが有効になります。
🔧
このルールによって報告される問題の一部は、 --fix
ESLintコマンドラインオプション.
によって自動的に修正できます。
このルールを実行するには、 型情報 が必要です。
TypeScriptの型パラメーターには、デフォルト値を指定できます。例:
function f<T = number>(/* ... */) {
// ...
}
明示的に指定された型パラメーターがその型パラメーターのデフォルト値と等しい場合、冗長です。例:`f<number>(...)` を呼び出す場合。このルールは、明示的に指定された型引数がその型パラメーターのデフォルト値である場合に報告します。
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-unnecessary-type-arguments": "error"
}
};
このルールをPlaygroundでお試しください ↗
例
- ❌ 正しくない
- ✅ 正しい
function f<T = number>() {}
f<number>();
Playgroundで開くfunction g<T = number, U = string>() {}
g<string, string>();
Playgroundで開くclass C<T = number> {}
new C<number>();
class D extends C<number> {}
Playgroundで開くinterface I<T = number> {}
class Impl implements I<number> {}
Playgroundで開くfunction f<T = number>() {}
f();
f<string>();
Playgroundで開くfunction g<T = number, U = string>() {}
g<string>();
g<number, number>();
Playgroundで開くclass C<T = number> {}
new C();
new C<string>();
class D extends C {}
class D extends C<string> {}
Playgroundで開くinterface I<T = number> {}
class Impl implements I<string> {}
Playgroundで開くオプション
このルールは設定できません。
使用しない場合
デフォルト値と等しい場合でも、型パラメーターを明示的に指定することを好む場合は、このルールをスキップできます。
型チェック済みlintルールは従来のlintルールよりも強力ですが、型チェック済みlintingの設定も必要です。パフォーマンスに関するトラブルシューティングで、型チェック済みルールの有効化後にパフォーマンスの低下が発生した場合はご確認ください。