跳至主要內容

no-unnecessary-type-constraint

禁止對泛型類型施加不必要的約束。

擴充 "plugin:@typescript-eslint/recommended" ESLint 設定檔 中啟用此規則。

💡

此規則報告的某些問題可透過編輯器 建議手動修復.

TypeScript 中的泛型類型參數 (<T>) 可以使用 extends 關鍵字 進行「約束」。未提供 extends 時,類型參數會預設約束為 unknown。因此,從 anyunknown 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>() {}
在新執行環境中開啟

選項

此規則無法設定。

何時不使用

如果您不關心類型約束的特定樣式,或根本從未使用過類型約束,則您不需要此規則。

資源