consistent-generic-constructors
Enforce specifying generic type arguments on type annotation or constructor name of a constructor call.
在 ESLint 配置 中扩展"plugin:@typescript-eslint/stylistic"
可启用此规则。
此规则报告的一些问题可通过 --fix
ESLint 命令行选项自动修复。
构造泛型类时,你可以在左侧(作为类型注释)或右侧(作为构造函数调用的一部分)指定类型参数:
英:When constructing a generic class, you can specify the type arguments on either the left-hand side (as a type annotation) or the right-hand side (as part of the constructor call):
// Left-hand side
const map: Map<string, number> = new Map();
// Right-hand side
const map = new Map<string, number>();
此规则确保类型参数一致地出现在声明的一侧。 保持在一侧可以持续提高代码的可读性。
英:This rule ensures that type arguments appear consistently on one side of the declaration. Keeping to one side consistently improve code readability.
该规则从不报告声明两侧或两侧都没有类型参数的情况。 如果类型注释和构造函数的名称不匹配,它也不会报告。
module.exports = {
"rules": {
"@typescript-eslint/consistent-generic-constructors": "error"
}
};
选项
constructor
(默认): 不允许出现在类型注释上的 only 类型参数。type-annotation
: 不允许在构造函数中出现 only 的类型参数。
constructor
- ❌ 不正确
- ✅ 正确
const map: Map<string, number> = new Map();
const set: Set<string> = new Set();
Open in Playgroundconst map = new Map<string, number>();
const map: Map<string, number> = new MyMap();
const set = new Set<string>();
const set = new Set();
const set: Set<string> = new Set<string>();
Open in Playgroundtype-annotation
- ❌ 不正确
- ✅ 正确
const map = new Map<string, number>();
const set = new Set<string>();
Open in Playgroundconst map: Map<string, number> = new Map();
const set: Set<string> = new Set();
const set = new Set();
const set: Set<string> = new Set<string>();
Open in Playground何时不使用它
如果你不想强制使用一种通用构造函数样式而不是另一种,则可以关闭此规则。
英:You can turn this rule off if you don't want to enforce one kind of generic constructor style over the other.
但是,请记住,不一致的风格可能会损害项目的可读性。 我们建议为此规则选择一个最适合你的项目的选项。
英:However, keep in mind that inconsistent style can harm readability in a project. We recommend picking a single option for this rule that works best for your project.
选项
该规则接受以下选项
type Options = ['constructor' | 'type-annotation'];
const defaultOptions: Options = ['constructor'];