メインコンテンツにスキップ

推論可能な型を許可しない

数値、文字列、または真偽値で初期化された変数またはパラメータの明示的な型宣言を許可しません。

🎨

拡張 "plugin:@typescript-eslint/"スタイル" ESLint設定 に追加すると、このルールが有効になります。

🔧

このルールによって報告される一部の問題は、 --fix ESLintコマンドラインオプション.

によって自動的に修正できます。

TypeScriptは、パラメータ、プロパティ、および変数の型を、それらのデフォルト値または初期値から推論できます。真偽値、数値、または文字列で初期化されたこれらの構成要素のいずれかに明示的な `:` 型注釈を使用する必要はありません。そうすることで、コードに不要な冗長性が加わり、読みづらくなり、場合によっては、TypeScriptがより具体的なリテラル型(例: `10`)ではなく、より一般的なプリミティブ型(例: `number`)を推論するのを妨げる可能性があります
module.exports = {
"rules": {
"@typescript-eslint/no-inferrable-types": "error"
}
};

.eslintrc.cjs

プレイグラウンドでこのルールを試す ↗

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`

function foo(a: number = 5, b: boolean = true) {
// ...
}
✅ 正しい

trueに設定すると、次のパターンは有効とみなされます。

`ignoreParameters`

class Foo {
prop: number = 5;
}
✅ 正しい

`ignoreProperties`

使用しない場合

推論できるかどうかに関係なく、明示的な型を強く推奨する場合は、このルールは適していない可能性があります。

TypeScriptの型推論