no-unnecessary-type-constraint
禁止對泛型類型施加不必要的約束。
✅
擴充 "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"
}
};
在新執行環境中嘗試此規則 ↗
範例
- ❌ 錯誤
- ✅ 正確
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>() {}
在新執行環境中開啟interface Foo<T> {}
type Bar<T> = {};
class Baz<T> {
qux<U>() {}
}
const Quux = <T>() => {};
function Quuz<T>() {}
在新執行環境中開啟選項
此規則無法設定。
何時不使用
如果您不關心類型約束的特定樣式,或根本從未使用過類型約束,則您不需要此規則。