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
#6211 shows a use ofarray.at(-1)
, as a cleaner equivalent toarray[array.length - 1]
.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at
Proposal: let's add a typed lint rule that, when it sees something likearray[array.length - 1]
on an Array-typed value, proposes fixing toarray.at(-1)
?
Fail Cases
declareconstarray:string[];array[array.length-1];
Pass Cases
declareconstarray:string[];array.at(-1);// [] indices are reasonablearray[0];// Don't look through functionsconstgetArray=()=>array;getArray()[getArray().length-1];
Additional Info
Reference for an existing similar rule:https://typescript-eslint.io/rules/prefer-includes.
I don't think we should enable this inrecommended orstrict configs until we only support Node versions that include.at
. Per#6396 this wouldn't make sense for users who compile to Node 14 and don't include a polyfill.