禁止不必要的类型约束
禁止对泛型类型进行不必要的约束。
✅
在 "plugin:@typescript-eslint/recommended"
的 ESLint 配置 中扩展此规则。
💡
此规则报告的一些问题可以通过编辑器手动修复 建议。
TypeScript 中的泛型类型参数 (<T>
) 可以使用 extends
关键字 进行“约束”。当没有提供 extends
时,类型参数默认约束为 unknown
。因此,从 any
或 unknown
扩展是多余的。
.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>() {}
在游乐场中打开选项
此规则不可配置。
何时不使用它
如果您不关心类型约束的具体样式,或者根本不使用它们,那么您将不需要此规则。