Skip to content
← Back to rules

eslint/grouped-accessor-pairs スタイル

An auto-fix is available for this rule.

何をするか

オブジェクトリテラルおよびクラス内のアクセサペアをグループ化することを要求します

なぜ問題か

ゲッターまたはセッターのペアをオブジェクトやクラス定義のどこにでも定義することは可能ですが、同じプロパティのアクセサ関数をグループ化することはベストプラクティスとされています。

このルールに対して 誤り のコード例:

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

このルールに対して 正しい コード例:

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

getBeforeSet オプションを使用した場合の 誤り のコード例:

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

getBeforeSet オプションを使用した場合の 正しい コード例:

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

setBeforeGet オプションを使用した場合の 誤り のコード例:

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

setBeforeGet オプションを使用した場合の 正しい コード例:

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

設定

1 番目のオプション

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

"anyOrder"

アクセサの順序は任意です。これはデフォルトです。

"getBeforeSet"

ゲッターはセッターの前に来なければなりません。

"setBeforeGet"

セッターはゲッターの前に来なければなりません。

2 番目のオプション

このオプションは以下のプロパティを持つオブジェクトです:

enforceForTSTypes

type: boolean

default: false

enforceForTSTypes が有効になると、このルールは TypeScript インターフェースや型エイリアスにも適用されます。

誤り の TypeScript コード例:

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

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

正しい の TypeScript コード例:

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

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

使用方法

設定ファイルまたは CLI でこのルールを 有効化 するには、次のように使用できます:

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

参照