sindresorhus/eslint-plugin-unicorn

`unicorn/prefer-at` incorrectly fixes object property key lookup

Closed

#2,229 opened on Dec 12, 2023

 (0 comments) (0 reactions) (0 assignees)JavaScript (468 forks)user submission
bughelp wantedtypes

Repository metrics

Stars
 (5,022 stars)
PR merge metrics
 (Avg merge 1d 16h) (399 merged PRs in 30d)

Description

for the following code:

const x = {
  1: 1,
  a: 2,
};

const y = x['a']; // can also be written as x.a 
const z = x[1];

the prefer-at rule will suggest and autofix const z = x[1]; to const z = x.at(1); - this is an object and therefore does not have the .at property available, while the x['a'] accessor remains unchanged.

While in TypeScript and Javascript, object property keys are supposed to always be strings, we cannot always assume that they are.

I believe that the rule should check whether you are accessing on an object and therefore not suggest the fix

Contributor guide