no-inferrable-types
禁止为初始化为数字、字符串或布尔值的变量或参数显式声明类型。
🎨
在 "plugin:@typescript-eslint/stylistic"
中扩展 ESLint 配置 将启用此规则。
🔧
此规则报告的一些问题可以通过 --fix
ESLint 命令行选项 自动修复。
TypeScript 能够从参数、属性和变量的默认值或初始值推断其类型。无需在这些初始化为布尔值、数字或字符串的构造中使用显式的 :
类型注释。这样做会增加代码的不必要的冗长性 - 使其更难阅读 - 并且在某些情况下会阻止 TypeScript 推断更具体的文字类型(例如 10
)而不是更通用的原始类型(例如 number
)。
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-inferrable-types": "error"
}
};
在游乐场中尝试此规则 ↗
示例
- ❌ 错误
- ✅ 正确
const a: bigint = 10n;
const a: bigint = BigInt(10);
const a: boolean = !0;
const a: boolean = Boolean(null);
const a: boolean = true;
const a: null = null;
const a: number = 10;
const a: number = Infinity;
const a: number = NaN;
const a: number = Number('1');
const a: RegExp = /a/;
const a: RegExp = new RegExp('a');
const a: string = `str`;
const a: string = String(1);
const a: symbol = Symbol('a');
const a: undefined = undefined;
const a: undefined = void someValue;
class Foo {
prop: number = 5;
}
function fn(a: number = 5, b: boolean = true) {}
在游乐场中打开const a = 10n;
const a = BigInt(10);
const a = !0;
const a = Boolean(null);
const a = true;
const a = null;
const a = 10;
const a = Infinity;
const a = NaN;
const a = Number('1');
const a = /a/;
const a = new RegExp('a');
const a = `str`;
const a = String(1);
const a = Symbol('a');
const a = undefined;
const a = void someValue;
class Foo {
prop = 5;
}
function fn(a = 5, b = true) {}
在游乐场中打开选项
此规则接受以下选项
type Options = [
{
ignoreParameters?: boolean;
ignoreProperties?: boolean;
},
];
const defaultOptions: Options = [
{ ignoreParameters: false, ignoreProperties: false },
];
ignoreParameters
设置为 true 时,以下模式被认为是有效的
function foo(a: number = 5, b: boolean = true) {
// ...
}
在游乐场中打开ignoreProperties
设置为 true 时,以下模式被认为是有效的
class Foo {
prop: number = 5;
}
在游乐场中打开何时不使用它
如果您强烈希望拥有显式类型,无论它们是否可以推断,此规则可能不适合您。