eslint/grouped-accessor-pairs Style
What it does
Require grouped accessor pairs in object literals and classes
Why is this bad?
While it is allowed to define the pair for a getter or a setter anywhere in an object or class definition, it’s considered a best practice to group accessor functions for the same property.
Examples
Examples of incorrect code for this rule:
const foo = {
get a() {
return this.val;
},
b: 1,
set a(value) {
this.val = value;
},
};
Examples of correct code for this rule:
const foo = {
get a() {
return this.val;
},
set a(value) {
this.val = value;
},
b: 1,
};
Examples of incorrect code for this rule with the getBeforeSet
option:
const foo = {
set a(value) {
this.val = value;
},
get a() {
return this.val;
},
};
Examples of correct code for this rule with the getBeforeSet
option:
const foo = {
get a() {
return this.val;
},
set a(value) {
this.val = value;
},
};
Examples of incorrect code for this rule with the setBeforeGet
option:
const foo = {
get a() {
return this.val;
},
set a(value) {
this.val = value;
},
};
Examples of correct code for this rule with the setBeforeGet
option:
const foo = {
set a(value) {
this.val = value;
},
get a() {
return this.val;
},
};
Options
This rule accepts two arguments:
- A string value to control the order of the getter/setter pairs:
"anyOrder"
(default): Accessors can be in any order"getBeforeSet"
: Getters must come before setters"setBeforeGet"
: Setters must come before getters
- An object with the following option:
enforceForTSTypes
(boolean, default: false): When enabled, also checks TypeScript interfaces and type aliases for grouped accessor pairs
TypeScript
When enforceForTSTypes
is enabled, this rule also applies to TypeScript interfaces and type aliases:
Examples of incorrect TypeScript code:
interface Foo {
get a(): string;
someProperty: string;
set a(value: string);
}
type Bar = {
get b(): string;
someProperty: string;
set b(value: string);
};
Examples of correct TypeScript code:
interface Foo {
get a(): string;
set a(value: string);
someProperty: string;
}
type Bar = {
get b(): string;
set b(value: string);
someProperty: string;
};
How to use
To enable this rule in the CLI or using the config file, you can use:
oxlint --deny grouped-accessor-pairs
{
"rules": {
"grouped-accessor-pairs": "error"
}
}