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"
}
}