本文へスキップ

prefer-includes

indexOfメソッドではなくincludesメソッドの使用を強制します。

🔒

拡張 "plugin:@typescript-eslint/strict-type-checked" ESLint設定 で有効にすると、このルールが有効になります。

🔧

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

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

このルールには 型情報 が必要です。

ES2015より前は、配列や文字列に値が存在するかどうかを確認する標準的な方法は、それぞれArray#indexOfString#indexOfを使用して-1と比較することでした。現在では、より読みやすく書きやすい代替手段があります。ES2015でString#includesが追加され、ES2016でArray#includesが追加されました。

このルールは、.indexOf呼び出しを.includesで置き換えることができる場合に報告します。さらに、このルールは、単純な正規表現のテストをString#includesに代えて報告します。

このルールは、2つのメソッドのパラメータが同じである場合に、includesメソッドを持つindexOfメソッド呼び出しのレシーバオブジェクトを報告します。一致する型には、StringArrayReadonlyArray、および型付き配列が含まれます。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/prefer-includes": "error"
}
};

Playgroundでこのルールを試してみてください ↗

const str: string;
const array: any[];
const readonlyArray: ReadonlyArray<any>;
const typedArray: UInt8Array;
const maybe: string;
const userDefined: {
indexOf(x: any): number;
includes(x: any): boolean;
};

str.indexOf(value) !== -1;
array.indexOf(value) !== -1;
readonlyArray.indexOf(value) === -1;
typedArray.indexOf(value) > -1;
maybe?.indexOf('') !== -1;
userDefined.indexOf(value) >= 0;

/example/.test(str);
Playgroundで開く

オプション

このルールは設定できません。

使用しない場合

型チェックされたlintルールは従来のlintルールよりも強力ですが、型チェックされたlintingの設定も必要です。型チェックされたルールを有効にした後にパフォーマンスの低下が発生する場合は、パフォーマンスに関するトラブルシューティングを参照してください。

リソース