Skip to content

eslint/grouped-accessor-pairs Style

🚧 An auto-fix is planned for this rule, but not implemented at this time.

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:

js
const foo = {
  get a() {
    return this.val;
  },
  b: 1,
  set a(value) {
    this.val = value;
  },
};

Examples of correct code for this rule:

js
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:

js
const foo = {
  set a(value) {
    this.val = value;
  },
  get a() {
    return this.val;
  },
};

Examples of correct code for this rule with the getBeforeSet option:

js
const foo = {
  get a() {
    return this.val;
  },
  set a(value) {
    this.val = value;
  },
};

Examples of incorrect code for this rule with the setBeforeGet option:

js
const foo = {
  get a() {
    return this.val;
  },
  set a(value) {
    this.val = value;
  },
};

Examples of correct code for this rule with the setBeforeGet option:

js
const foo = {
  set a(value) {
    this.val = value;
  },
  get a() {
    return this.val;
  },
};

Configuration

This rule accepts a configuration object with the following properties:

enforceForTSTypes

type: boolean

default: false

When enforceForTSTypes is enabled, this rule also applies to TypeScript interfaces and type aliases:

Examples of incorrect TypeScript code:

ts
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:

ts
interface Foo {
  get a(): string;
  set a(value: string);
  someProperty: string;
}

type Bar = {
  get b(): string;
  set b(value: string);
  someProperty: string;
};

pairOrder

type: "anyOrder" | "getBeforeSet" | "setBeforeGet"

default: "anyOrder"

A string value to control the order of the getter/setter pairs:

  • "anyOrder": Accessors can be in any order
  • "getBeforeSet": Getters must come before setters
  • "setBeforeGet": Setters must come before getters

How to use

To enable this rule in the CLI or using the config file, you can use:

bash
oxlint --deny grouped-accessor-pairs
json
{
  "rules": {
    "grouped-accessor-pairs": "error"
  }
}

References

Released under the MIT License.