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

prefer-find

単一の結果を探すときに、Array.prototype.filter() の後に [0] を続けるのではなく、Array.prototype.find() の使用を強制します。

💡

このルールによって報告されるいくつかの問題は、エディターの 提案によって手動で修正できます.

💭

このルールは、実行するために 型情報 が必要です。

条件に一致する配列内の最初の項目を検索する場合、arr.filter(x => x > 0)[0] のようなコードを使用するのが手軽かもしれません。しかし、代わりに Array.prototype.find() を使用する方が簡単です。 arr.find(x => x > 0) も条件に一致する最初のエントリを返します。.find() は一致するものを見つけるまでコールバックを実行するだけで済むため、効率も優れています。

情報

アプローチ間の短絡動作の違いに注意してください。.find() は一致するものを見つけるまで配列要素に対してのみコールバックを実行しますが、.filter() はすべての配列要素に対してコールバックを実行します。したがって、このルールによるエラーを修正するときは、.filter() コールバックに副作用がないことを確認してください。

[1, 2, 3].filter(x => x > 1)[0];

[1, 2, 3].filter(x => x > 1).at(0);
Playgroundで開く
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/prefer-find": "error"
}
};

Playgroundでこのルールを試す ↗

オプション

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

使用しない場合

.filter(callback)[0] のようなパターンを意図的に使用して、すべての配列要素の callback で副作用を実行する場合は、このルールを避けることをお勧めします。


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

リソース