跳至主要内容

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) {}
在游乐场中打开

选项

此规则接受以下选项

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;
}
在游乐场中打开

何时不使用它

如果您强烈希望拥有显式类型,无论它们是否可以推断,此规则可能不适合您。

进一步阅读

资源