---
title: member-ordering
description: クラスメンバーの順序を統一します。
---

- ルール ID: `tai-kun/member-ordering`
- 自動修正: なし

クラスメンバーを `public static` フィールド → `protected static` フィールド → `private static` フィールド → `static` ブロック → `public` インスタンスフィールド → `protected` インスタンスフィールド → `private` インスタンスフィールド → constructor → `public static` メソッド → `protected static` メソッド → `private static` メソッド → `public` インスタンスメソッド → `protected` インスタンスメソッド → `private` インスタンスメソッドの順に要求します。

## 設定 [#configuration]

このルールを有効にするには、`vite.config.ts` の `lint.rules` に追加します。

```ts
"tai-kun/member-ordering": "error",
```

## 例 [#examples]

### 違反例 [#invalid]

```ts
class Service {
  constructor() {}

  value = 1;

  static create() {
    return new Service();
  }

  run() {}
}
```

### 修正後 [#valid]

```ts
class Service {
  static instances = 0;

  protected static cache = new Map();

  private static registry = new Set();

  value = 1;

  protected options = {};

  #internal = 0;

  constructor() {}

  static create() {
    return new Service();
  }

  protected static load() {}

  run() {}

  protected stop() {}

  #cleanup() {}
}
```

## 注意 [#notes]

- 報告のみで、自動修正は行いません。
- index signature は順序の判定に含めません。
- 各フィールド・メソッド内では `public` → `protected` → `private` の順に要求します。修飾子なしは `public` として扱います。
- `#` によるプライベートフィールド・メソッドは `private` として扱います。
- constructor はアクセス修飾子にかかわらず1つのグループとして扱います。
- getter/setter はメソッドとして扱います。

## 関連ルール [#related-rules]

- [`blank-line`](/vp-lint-plugins/rules/blank-line)
