本文へ移動

不要な型制約を禁止します。

ジェネリック型に対する不要な制約を禁止します。

拡張 "plugin:@typescript-eslint/recommended" ESLint設定 で有効にすると、このルールが有効になります。

💡

このルールによって報告される問題の中には、エディターの 提案によって手動で修正できるものもあります。.

TypeScriptのジェネリック型パラメーター(<T>)は、extendsキーワードを使用して「制約」される場合があります。extendsが提供されない場合、型パラメーターはunknownに制約がデフォルト設定されます。そのため、anyまたはunknownからextendすることは冗長です。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-unnecessary-type-constraint": "error"
}
};

Playgroundでこのルールを試してみてください ↗

interface FooAny<T extends any> {}

interface FooUnknown<T extends unknown> {}

type BarAny<T extends any> = {};

type BarUnknown<T extends unknown> = {};

class BazAny<T extends any> {
quxAny<U extends any>() {}
}

const QuuxAny = <T extends any>() => {};

function QuuzAny<T extends any>() {}
Playgroundで開く

オプション

このルールは設定できません。

使用しない場合

型制約の特定のスタイルを気にしない場合、またはそもそも型制約を使用しない場合は、このルールは必要ありません。

リソース