跳转到内容

noDuplicateObjectKeys

Diagnostic Category: lint/suspicious/noDuplicateObjectKeys

Since: v1.0.0

Sources:

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 value named a is later overwritten by an object member with the same name.

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

Overwritten with this value.

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 value named a

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 named a 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 value.

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 named a

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) {},
}