Skip to content

noDuplicateObjectKeys (JavaScript)

biome.json
{
"linter": {
"rules": {
"suspicious": {
"noDuplicateObjectKeys": "error"
}
}
}
}

Disallow two keys with the same name inside objects.

If an object property with the same name is defined multiple times (except when combining a getter with a setter), only the last definition makes it into the object and previous definitions are ignored, which is likely a mistake.

const obj = {
a: 1,
a: 2,
}
code-block.js:2:5 lint/suspicious/noDuplicateObjectKeys  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

This property is later overwritten by an object member with the same name.

1 │ const obj = {
> 2 │ a: 1,
^^^^
3 │ a: 2,
4 │ }

Overwritten with this property.

1 │ const obj = {
2 │ a: 1,
> 3 │ a: 2,
^^^^
4 │ }
5 │

If an object property with the same name is defined multiple times (except when combining a getter with a setter), only the last definition makes it into the object and previous definitions are ignored.

Unsafe fix: Remove this property.

1 1 const obj = {
2 - ···a:·1,
3 2 a: 2,
4 3 }

const obj = {
set a(v) {},
a: 2,
}
code-block.js:2:5 lint/suspicious/noDuplicateObjectKeys  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

This setter is later overwritten by an object member with the same name.

1 │ const obj = {
> 2 │ set a(v) {},
^^^^^^^^^^^
3 │ a: 2,
4 │ }

Overwritten with this property.

1 │ const obj = {
2 │ set a(v) {},
> 3 │ a: 2,
^^^^
4 │ }
5 │

If an object property with the same name is defined multiple times (except when combining a getter with a setter), only the last definition makes it into the object and previous definitions are ignored.

Unsafe fix: Remove this setter.

1 1 const obj = {
2 - ···set·a(v)·{},
3 2 a: 2,
4 3 }

const obj = {
a: 1,
b: 2,
}
const obj = {
get a() { return 1; },
set a(v) {},
}