Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork2.8k
Open
Description
Before You File a Proposal Please Confirm You Have Done The Following...
- I havesearched for related issues and found none that match my proposal.
- I have searched thecurrent rule list and found no rules that match my proposal.
- I haveread the FAQ and my problem is not listed.
My proposal is suitable for this project
- My proposal specifically checks TypeScript syntax, or it proposes a check that requires type information to be accurate.
- My proposal is not a "formatting rule"; meaning it does not just enforce how code is formatted (whitespace, brace placement, etc).
- I believe my proposal would be useful to the broader TypeScript community (meaning it is not a niche proposal).
Description
Following#5027 (comment): it can sometimes be more terse to use an Array method like.find
over afor
loop.
Fail Cases
functiontraditionalForLoop(array:string[],condition:(item:string)=>boolean){for(leti=0;i<array.length;i+=1){if(condition(array[i])){returnarray[i];}}}functionforOfLoop(array:string[],condition:(item:string)=>boolean){for(constitemofarray){if(condition(item)){returnitem;}}}
Pass Cases
functionfixed(array:string[],condition:(item:string)=>boolean){returnarray.find(item=>condition(item));}
Additional Info
Filing it in typescript-eslint rather than ESLint core because the rule'd want to use type information to know the iterated-over collection is an array.
Storing a variable likelet found: string | undefined
should also match the rule.
As@bradzacher said in#5027 (comment), this is a relatively complex code construct to detect.