noDuplicateObjectKeys
Summary
Section titled Summary- Rule available since:
v1.0.0
- Diagnostic Category:
lint/suspicious/noDuplicateObjectKeys
- This rule is recommended, which means is enabled by default.
- This rule doesn’t have a fix.
- The default severity of this rule is error.
Description
Section titled DescriptionDisallow two keys with the same name inside objects.
Examples
Section titled ExamplesInvalid
Section titled Invalid{ "title": "New title", "title": "Second title"}
code-block.json:2:3 lint/suspicious/noDuplicateObjectKeys ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ The key title was already declared.
1 │ {
> 2 │ “title”: “New title”,
│ ^^^^^^^
3 │ “title”: “Second title”
4 │ }
ℹ This where a duplicated key was declared again.
1 │ {
2 │ “title”: “New title”,
> 3 │ “title”: “Second title”
│ ^^^^^^^
4 │ }
5 │
ℹ If a key is defined multiple times, only the last definition takes effect. Previous definitions are ignored.
Valid
Section titled Valid{ "title": "New title", "secondTitle": "Second title"}
How to configure
Section titled How to configure{ "linter": { "rules": { "suspicious": { "noDuplicateObjectKeys": "error" } } }}
Related links
Section titled Related linksSummary
Section titled Summary- Rule available since:
v1.0.0
- Diagnostic Category:
lint/suspicious/noDuplicateObjectKeys
- This rule is recommended, which means is enabled by default.
- This rule has an unsafe fix.
- The default severity of this rule is error.
- Sources:
- Same as
no-dupe-keys
- Same as
Description
Section titled DescriptionDisallow 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.
Examples
Section titled ExamplesInvalid
Section titled Invalidconst 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 │ }
Valid
Section titled Validconst obj = { a: 1, b: 2,}
const obj = { get a() { return 1; }, set a(v) {},}
How to configure
Section titled How to configure{ "linter": { "rules": { "suspicious": { "noDuplicateObjectKeys": "error" } } }}