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で開く[1, 2, 3].find(x => x > 1);
Playgroundで開く.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/prefer-find": "error"
}
};
Playgroundでこのルールを試す ↗
オプション
このルールは設定できません。
使用しない場合
.filter(callback)[0]
のようなパターンを意図的に使用して、すべての配列要素の callback
で副作用を実行する場合は、このルールを避けることをお勧めします。
型チェックされたリントルールは従来のリントルールよりも強力ですが、型チェックされたリンティングの設定も必要です。型チェックされたルールを有効にした後でパフォーマンスの低下が発生した場合は、パフォーマンスのトラブルシューティングを参照してください。