member-ordering
メンバー宣言の順序の一貫性を要求します。
このルールは、クラス、インターフェース、および型リテラルの構造化と順序付けの方法を標準化することを目的としています。フィールド、メソッド、コンストラクターの順序が一貫していると、コードが読みやすく、ナビゲートしやすく、編集しやすくなります。
このルールは機能フリーズされています。新しいオプションなどの新機能は追加されません。既存の機能範囲については、バグ修正とドキュメント修正は引き続き受け付けます。
命名規則やソート規則を強制するスタイルのルールは、ますます曖昧な機能が要求されるにつれて、理解不能なほど複雑になる傾向があります。このルールは、typescript-eslint プロジェクトが維持できる範囲の限界に達しました。詳細については、eslint-plugin: 命名およびソートスタイルのルールの機能フリーズを参照してください。
module.exports = {
"rules": {
"@typescript-eslint/member-ordering": "error"
}
};
プレイグラウンドでこのルールを試す ↗
オプション
interface Options {
default?: OrderConfig;
classes?: OrderConfig;
classExpressions?: OrderConfig;
interfaces?: OrderConfig;
typeLiterals?: OrderConfig;
}
type OrderConfig = MemberType[] | SortedOrderConfig | 'never';
interface SortedOrderConfig {
memberTypes?: MemberType[] | 'never';
optionalityOrder?: 'optional-first' | 'required-first';
order?:
| 'alphabetically'
| 'alphabetically-case-insensitive'
| 'as-written'
| 'natural'
| 'natural-case-insensitive';
}
// See below for the more specific MemberType strings
type MemberType = string | string[];
OrderConfig
オプションは以下に対して設定できます。
default
: すべての構成要素 (フォールバックとして使用)classes
?: クラス固有の順序をオーバーライドclassExpressions
?: クラス式固有の順序をオーバーライドinterfaces
?: インターフェース固有の順序をオーバーライドtypeLiterals
?: 型リテラル固有の順序をオーバーライド
各種類の構成要素に対する OrderConfig
設定では、最大3つのレベルでソートを設定できます
memberTypes
: メソッドとプロパティなどのメンバータイプグループで編成optionalityOrder
: すべてのオプションメンバーを最初に配置するか、すべての必須メンバーを最初に配置するかorder
: メンバー名に基づいて編成(アルファベット順など)
グループ
メンバーのさまざまな属性に基づいて、さまざまなグループを定義できます。サポートされているメンバー属性は、次の順序で
- アクセス可能性 (
'public' | 'protected' | 'private' | '#private'
) - デコレーション (
'decorated'
): メンバーに明示的なアクセシビリティデコレーターがあるかどうか - 種類 (
'call-signature' | 'constructor' | 'field' | 'readonly-field' | 'get' | 'method' | 'set' | 'signature' | 'readonly-signature'
)
メンバー属性は、'-'
で結合して、より具体的なグループに組み合わせることができます。たとえば、'public-field'
は'private-field'
の前に来ます。
順序
order
の値は、グループ内でメンバーがどのような順序であるべきかを指定します。デフォルトはas-written
で、順序は任意であることを意味します。その他の許可されている値は次のとおりです。
alphabetically
: 文字列の<
比較を直接使用して、a-zのアルファベット順にソートされます (したがって、B
はa
の前に来ます)alphabetically-case-insensitive
: 大文字と小文字を区別せずに、a-zのアルファベット順にソートされます (したがって、a
はB
の前に来ます)natural
:alphabetically
と同じですが、数値のよりわかりやすいソートにはnatural-compare-lite
を使用します。natural-case-insensitive
:alphabetically-case-insensitive
と同じですが、数値のよりわかりやすいソートにはnatural-compare-lite
を使用します。
デフォルト設定
デフォルト設定は次のようになります。
{
"default": {
"memberTypes": [
// Index signature
"signature",
"call-signature",
// Fields
"public-static-field",
"protected-static-field",
"private-static-field",
"#private-static-field",
"public-decorated-field",
"protected-decorated-field",
"private-decorated-field",
"public-instance-field",
"protected-instance-field",
"private-instance-field",
"#private-instance-field",
"public-abstract-field",
"protected-abstract-field",
"public-field",
"protected-field",
"private-field",
"#private-field",
"static-field",
"instance-field",
"abstract-field",
"decorated-field",
"field",
// Static initialization
"static-initialization",
// Constructors
"public-constructor",
"protected-constructor",
"private-constructor",
"constructor",
// Accessors
"public-static-accessor",
"protected-static-accessor",
"private-static-accessor",
"#private-static-accessor",
"public-decorated-accessor",
"protected-decorated-accessor",
"private-decorated-accessor",
"public-instance-accessor",
"protected-instance-accessor",
"private-instance-accessor",
"#private-instance-accessor",
"public-abstract-accessor",
"protected-abstract-accessor",
"public-accessor",
"protected-accessor",
"private-accessor",
"#private-accessor",
"static-accessor",
"instance-accessor",
"abstract-accessor",
"decorated-accessor",
"accessor",
// Getters
"public-static-get",
"protected-static-get",
"private-static-get",
"#private-static-get",
"public-decorated-get",
"protected-decorated-get",
"private-decorated-get",
"public-instance-get",
"protected-instance-get",
"private-instance-get",
"#private-instance-get",
"public-abstract-get",
"protected-abstract-get",
"public-get",
"protected-get",
"private-get",
"#private-get",
"static-get",
"instance-get",
"abstract-get",
"decorated-get",
"get",
// Setters
"public-static-set",
"protected-static-set",
"private-static-set",
"#private-static-set",
"public-decorated-set",
"protected-decorated-set",
"private-decorated-set",
"public-instance-set",
"protected-instance-set",
"private-instance-set",
"#private-instance-set",
"public-abstract-set",
"protected-abstract-set",
"public-set",
"protected-set",
"private-set",
"#private-set",
"static-set",
"instance-set",
"abstract-set",
"decorated-set",
"set",
// Methods
"public-static-method",
"protected-static-method",
"private-static-method",
"#private-static-method",
"public-decorated-method",
"protected-decorated-method",
"private-decorated-method",
"public-instance-method",
"protected-instance-method",
"private-instance-method",
"#private-instance-method",
"public-abstract-method",
"protected-abstract-method",
"public-method",
"protected-method",
"private-method",
"#private-method",
"static-method",
"instance-method",
"abstract-method",
"decorated-method",
"method",
],
},
}
デフォルト設定には、他のメンバータイプを含むメンバーグループタイプが含まれています。これは、より良いエラーメッセージを提供するための意図的なものです。
デフォルトでは、メンバーはソートされません。アルファベット順にソートする場合は、カスタム設定を行う必要があります。
例
すべての構成要素の一般的な順序
この設定は、すべての構成要素の順序を指定します。シグネチャ、メソッド、コンストラクター、およびフィールド以外のメンバータイプは無視します。また、アクセシビリティとスコープも無視します。
// .eslintrc.json
{
"rules": {
"@typescript-eslint/member-ordering": [
"error",
{ "default": ["signature", "method", "constructor", "field"] },
],
},
}
- ❌ 不正
- ✅ 正しい
interface Foo {
B: string; // -> field
new (); // -> constructor
A(): void; // -> method
[Z: string]: any; // -> signature
}
プレイグラウンドで開くtype Foo = {
B: string; // -> field
// no constructor
A(): void; // -> method
// no signature
};
プレイグラウンドで開くclass Foo {
private C: string; // -> field
public D: string; // -> field
protected static E: string; // -> field
constructor() {} // -> constructor
public static A(): void {} // -> method
public B(): void {} // -> method
[Z: string]: any; // -> signature
}
プレイグラウンドで開くconst Foo = class {
private C: string; // -> field
public D: string; // -> field
constructor() {} // -> constructor
public static A(): void {} // -> method
public B(): void {} // -> method
[Z: string]: any; // -> signature
protected static E: string; // -> field
};
プレイグラウンドで開くinterface Foo {
[Z: string]: any; // -> signature
A(): void; // -> method
new (); // -> constructor
B: string; // -> field
}
プレイグラウンドで開くtype Foo = {
// no signature
A(): void; // -> method
// no constructor
B: string; // -> field
};
プレイグラウンドで開くclass Foo {
[Z: string]: any; // -> signature
public static A(): void {} // -> method
public B(): void {} // -> method
constructor() {} // -> constructor
private C: string; // -> field
public D: string; // -> field
protected static E: string; // -> field
}
プレイグラウンドで開くconst Foo = class {
[Z: string]: any; // -> signature
public static A(): void {} // -> method
public B(): void {} // -> method
constructor() {} // -> constructor
private C: string; // -> field
public D: string; // -> field
protected static E: string; // -> field
};
プレイグラウンドで開くクラス
パブリックインスタンスメソッドをパブリック静的フィールドの前に配置する
この設定は、パブリックインスタンスメソッドをパブリック静的フィールドの前に配置する必要があることを指定します。その他はどこに配置しても構いません。アクセシビリティとスコープがインターフェースまたは型リテラルの一部ではないため、インターフェースや型リテラルには適用されません。
// .eslintrc.json
{
"rules": {
"@typescript-eslint/member-ordering": [
"error",
{ "default": ["public-instance-method", "public-static-field"] },
],
},
}
- ❌ 不正
- ✅ 正しい
class Foo {
private C: string; // (irrelevant)
public D: string; // (irrelevant)
public static E: string; // -> public static field
constructor() {} // (irrelevant)
public static A(): void {} // (irrelevant)
[Z: string]: any; // (irrelevant)
public B(): void {} // -> public instance method
}
プレイグラウンドで開くconst Foo = class {
private C: string; // (irrelevant)
[Z: string]: any; // (irrelevant)
public static E: string; // -> public static field
public D: string; // (irrelevant)
constructor() {} // (irrelevant)
public static A(): void {} // (irrelevant)
public B(): void {} // -> public instance method
};
プレイグラウンドで開くclass Foo {
public B(): void {} // -> public instance method
private C: string; // (irrelevant)
public D: string; // (irrelevant)
public static E: string; // -> public static field
constructor() {} // (irrelevant)
public static A(): void {} // (irrelevant)
[Z: string]: any; // (irrelevant)
}
プレイグラウンドで開くconst Foo = class {
public B(): void {} // -> public instance method
private C: string; // (irrelevant)
[Z: string]: any; // (irrelevant)
public D: string; // (irrelevant)
constructor() {} // (irrelevant)
public static A(): void {} // (irrelevant)
public static E: string; // -> public static field
};
プレイグラウンドで開くインスタンスフィールドより前の静的フィールド
この設定は、静的フィールドがインスタンスフィールドの前に来るように指定し、パブリックな静的フィールドが最初に配置されます。インターフェースや型リテラルには適用されません。なぜなら、アクセシビリティとスコープはそれらの一部ではないからです。
{
"rules": {
"@typescript-eslint/member-ordering": [
"error",
{ "default": ["public-static-field", "static-field", "instance-field"] },
],
},
}
- ❌ 不正
- ✅ 正しい
class Foo {
private E: string; // -> instance field
private static B: string; // -> static field
protected static C: string; // -> static field
private static D: string; // -> static field
public static A: string; // -> public static field
[Z: string]: any; // (irrelevant)
}
プレイグラウンドで開くconst foo = class {
public T(): void {} // method (irrelevant)
private static B: string; // -> static field
constructor() {} // constructor (irrelevant)
private E: string; // -> instance field
protected static C: string; // -> static field
private static D: string; // -> static field
[Z: string]: any; // signature (irrelevant)
public static A: string; // -> public static field
};
プレイグラウンドで開くclass Foo {
public static A: string; // -> public static field
private static B: string; // -> static field
protected static C: string; // -> static field
private static D: string; // -> static field
private E: string; // -> instance field
[Z: string]: any; // (irrelevant)
}
プレイグラウンドで開くconst foo = class {
[Z: string]: any; // -> signature (irrelevant)
public static A: string; // -> public static field
constructor() {} // -> constructor (irrelevant)
private static B: string; // -> static field
protected static C: string; // -> static field
private static D: string; // -> static field
private E: string; // -> instance field
public T(): void {} // -> method (irrelevant)
};
プレイグラウンドで開くクラス宣言
この設定は、クラスの順序のみを指定します。まずメソッド、次にコンストラクター、最後にフィールドとなります。クラス式には適用されません(クラス式にはclassExpressions
を使用してください)。クラス宣言とクラス宣言以外のすべての構文構造には、デフォルト設定が使用されます。
// .eslintrc.json
{
"rules": {
"@typescript-eslint/member-ordering": [
"error",
{ "classes": ["method", "constructor", "field"] },
],
},
}
- ❌ 不正
- ✅ 正しい
class Foo {
private C: string; // -> field
public D: string; // -> field
protected static E: string; // -> field
constructor() {} // -> constructor
public static A(): void {} // -> method
public B(): void {} // -> method
}
プレイグラウンドで開くclass Foo {
public static A(): void {} // -> method
public B(): void {} // -> method
constructor() {} // -> constructor
private C: string; // -> field
public D: string; // -> field
protected static E: string; // -> field
}
プレイグラウンドで開くクラス式
この設定は、クラス式の順序のみを指定します。まずメソッド、次にコンストラクター、最後にフィールドとなります。クラス宣言には適用されません(クラス宣言にはclasses
を使用してください)。クラス宣言とクラス式以外のすべての構文構造には、デフォルト設定が使用されます。
// .eslintrc.json
{
"rules": {
"@typescript-eslint/member-ordering": [
"error",
{ "classExpressions": ["method", "constructor", "field"] },
],
},
}
- ❌ 不正
- ✅ 正しい
const foo = class {
private C: string; // -> field
public D: string; // -> field
protected static E: string; // -> field
constructor() {} // -> constructor
public static A(): void {} // -> method
public B(): void {} // -> method
};
プレイグラウンドで開くconst foo = class {
public static A(): void {} // -> method
public B(): void {} // -> method
constructor() {} // -> constructor
private C: string; // -> field
public D: string; // -> field
protected static E: string; // -> field
};
プレイグラウンドで開くインターフェース
この設定は、インターフェースの順序のみを指定します。まずシグネチャ、次にメソッド、次にコンストラクター、最後にフィールドとなります。型リテラルには適用されません(型リテラルにはtypeLiterals
を使用してください)。型リテラルとクラス式以外のすべての構文構造には、デフォルト設定が使用されます。
これらのメンバー型は、interfaces
で許可されている唯一のものです。
// .eslintrc.json
{
"rules": {
"@typescript-eslint/member-ordering": [
"error",
{ "interfaces": ["signature", "method", "constructor", "field"] },
],
},
}
- ❌ 不正
- ✅ 正しい
interface Foo {
B: string; // -> field
new (); // -> constructor
A(): void; // -> method
[Z: string]: any; // -> signature
}
プレイグラウンドで開くinterface Foo {
[Z: string]: any; // -> signature
A(): void; // -> method
new (); // -> constructor
B: string; // -> field
}
プレイグラウンドで開く型リテラル
この設定は、型リテラルの順序のみを指定します。まずシグネチャ、次にメソッド、次にコンストラクター、最後にフィールドとなります。インターフェースには適用されません(インターフェースにはinterfaces
を使用してください)。インターフェースとクラス式以外のすべての構文構造には、デフォルト設定が使用されます。
これらのメンバー型は、typeLiterals
で許可されている唯一のものです。
// .eslintrc.json
{
"rules": {
"@typescript-eslint/member-ordering": [
"error",
{ "typeLiterals": ["signature", "method", "constructor", "field"] },
],
},
}
- ❌ 不正
- ✅ 正しい
type Foo = {
B: string; // -> field
A(): void; // -> method
new (); // -> constructor
[Z: string]: any; // -> signature
};
プレイグラウンドで開くtype Foo = {
[Z: string]: any; // -> signature
A(): void; // -> method
new (); // -> constructor
B: string; // -> field
};
プレイグラウンドで開くソートオプション
メンバーグループ内でのアルファベット順ソート
memberTypes
が指定されていない場合、デフォルトのメンバー順が適用されます。デフォルトの順序は、デフォルト設定で確認できます。
// .eslintrc.json
{
"rules": {
"@typescript-eslint/member-ordering": [
"error",
{
"default": {
"order": "alphabetically",
},
},
],
},
}
- ❌ 不正
- ✅ 正しい
interface Foo {
a: x;
B: x;
c: x;
B(): void;
c(): void;
a(): void;
}
プレイグラウンドで開くinterface Foo {
B: x;
a: x;
c: x;
B(): void;
a(): void;
c(): void;
}
プレイグラウンドで開くカスタムメンバーグループ内でのアルファベット順ソート
この設定は、各カスタムmemberTypes
グループ内で、メンバーが大文字と小文字を区別するアルファベット順になるように指定します。
// .eslintrc.json
{
"rules": {
"@typescript-eslint/member-ordering": [
"error",
{
"default": {
"memberTypes": ["method", "field"],
"order": "alphabetically",
},
},
],
},
}
- ❌ 不正
- ✅ 正しい
interface Foo {
B(): void;
c(): void;
a(): void;
a: x;
B: x;
c: x;
}
プレイグラウンドで開くinterface Foo {
B(): void;
a(): void;
c(): void;
B: x;
a: x;
c: x;
}
プレイグラウンドで開くメンバーグループ内での大文字小文字を区別しないアルファベット順ソート
memberTypes
が指定されていない場合、デフォルトのメンバー順が適用されます。デフォルトの順序は、デフォルト設定で確認できます。
// .eslintrc.json
{
"rules": {
"@typescript-eslint/member-ordering": [
"error",
{
"default": {
"order": "alphabetically-case-insensitive",
},
},
],
},
}
- ❌ 不正
- ✅ 正しい
interface Foo {
B: x;
a: x;
c: x;
B(): void;
c(): void;
a(): void;
}
プレイグラウンドで開くinterface Foo {
a: x;
B: x;
c: x;
a(): void;
B(): void;
c(): void;
}
プレイグラウンドで開くメンバーグループを無視したアルファベット順ソート
この設定は、メンバーがすべて大文字と小文字を区別するアルファベット順にソートされるように指定します。memberTypes
に "never"
を指定することで、メンバーグループ型を完全に無視します。
// .eslintrc.json
{
"rules": {
"@typescript-eslint/member-ordering": [
"error",
{ "default": { "memberTypes": "never", "order": "alphabetically" } },
],
},
}
- ❌ 不正
- ✅ 正しい
interface Foo {
b(): void;
a: boolean;
[a: string]: number;
new (): Bar;
(): Baz;
}
プレイグラウンドで開くinterface Foo {
[a: string]: number;
a: boolean;
b(): void;
(): Baz;
new (): Bar;
}
プレイグラウンドで開くオプションメンバーを最初または最後にソート
optionalityOrder
オプションを有効にすると、グループ内のすべてのオプションメンバーをグループの先頭または末尾に配置できます。
この設定では、すべてのオプションメンバーがすべての必須メンバーの前に配置されます。
// .eslintrc.json
{
"rules": {
"@typescript-eslint/member-ordering": [
"error",
{
"default": {
"optionalityOrder": "optional-first",
"order": "alphabetically",
},
},
],
},
}
- ❌ 不正
- ✅ 正しい
interface Foo {
a: boolean;
b?: number;
c: string;
}
プレイグラウンドで開くinterface Foo {
b?: number;
a: boolean;
c: string;
}
プレイグラウンドで開くこの設定では、すべての必須メンバーがすべてのオプションメンバーの前に配置されます。
// .eslintrc.json
{
"rules": {
"@typescript-eslint/member-ordering": [
"error",
{
"default": {
"optionalityOrder": "required-first",
"order": "alphabetically",
},
},
],
},
}
- ❌ 不正
- ✅ 正しい
interface Foo {
a: boolean;
b?: number;
c: string;
}
プレイグラウンドで開くinterface Foo {
a: boolean;
c: string;
b?: number;
}
プレイグラウンドで開くすべてのサポートされるオプション
メンバー型(詳細形式)
メンバー型を指定する方法は複数あります。最も明示的で詳細な形式は次のとおりです。
[
// Index signature
"signature",
"readonly-signature",
// Fields
"public-static-field",
"public-static-readonly-field",
"protected-static-field",
"protected-static-readonly-field",
"private-static-field",
"private-static-readonly-field",
"#private-static-field",
"#private-static-readonly-field",
"public-decorated-field",
"public-decorated-readonly-field",
"protected-decorated-field",
"protected-decorated-readonly-field",
"private-decorated-field",
"private-decorated-readonly-field",
"public-instance-field",
"public-instance-readonly-field",
"protected-instance-field",
"protected-instance-readonly-field",
"private-instance-field",
"private-instance-readonly-field",
"#private-instance-field",
"#private-instance-readonly-field",
"public-abstract-field",
"public-abstract-readonly-field",
"protected-abstract-field",
"protected-abstract-readonly-field",
"public-field",
"public-readonly-field",
"protected-field",
"protected-readonly-field",
"private-field",
"private-readonly-field"
"#private-field",
"#private-readonly-field"
"static-field",
"static-readonly-field",
"instance-field",
"instance-readonly-field"
"abstract-field",
"abstract-readonly-field",
"decorated-field",
"decorated-readonly-field",
"field",
"readonly-field",
// Static initialization
"static-initialization",
// Constructors
"public-constructor",
"protected-constructor",
"private-constructor",
// Getters
"public-static-get",
"protected-static-get",
"private-static-get",
"#private-static-get",
"public-decorated-get",
"protected-decorated-get",
"private-decorated-get",
"public-instance-get",
"protected-instance-get",
"private-instance-get",
"#private-instance-get",
"public-abstract-get",
"protected-abstract-get",
"public-get",
"protected-get",
"private-get",
"#private-get",
"static-get",
"instance-get",
"abstract-get",
"decorated-get",
"get",
// Setters
"public-static-set",
"protected-static-set",
"private-static-set",
"#private-static-set",
"public-decorated-set",
"protected-decorated-set",
"private-decorated-set",
"public-instance-set",
"protected-instance-set",
"private-instance-set",
"#private-instance-set",
"public-abstract-set",
"protected-abstract-set",
"public-set",
"protected-set",
"private-set",
"static-set",
"instance-set",
"abstract-set",
"decorated-set",
"set",
// Methods
"public-static-method",
"protected-static-method",
"private-static-method",
"#private-static-method",
"public-decorated-method",
"protected-decorated-method",
"private-decorated-method",
"public-instance-method",
"protected-instance-method",
"private-instance-method",
"#private-instance-method",
"public-abstract-method",
"protected-abstract-method"
]
可能な型の一部のみを指定した場合、指定されていない型は特定の順序を持つことができます。これは、指定された型の前、中、または後に配置でき、リンターはそれについて文句を言わないことを意味します。
メンバーグループ型(アクセシビリティあり、スコープ無視)
スコープを無視して、メンバー型をアクセシビリティ (static
、instance
、abstract
) でグループ化することも可能です。
[
// Index signature
// No accessibility for index signature.
// Fields
"public-field", // = ["public-static-field", "public-instance-field"]
"protected-field", // = ["protected-static-field", "protected-instance-field"]
"private-field", // = ["private-static-field", "private-instance-field"]
// Static initialization
// No accessibility for static initialization.
// Constructors
// Only the accessibility of constructors is configurable. See below.
// Getters
"public-get", // = ["public-static-get", "public-instance-get"]
"protected-get", // = ["protected-static-get", "protected-instance-get"]
"private-get", // = ["private-static-get", "private-instance-get"]
// Setters
"public-set", // = ["public-static-set", "public-instance-set"]
"protected-set", // = ["protected-static-set", "protected-instance-set"]
"private-set", // = ["private-static-set", "private-instance-set"]
// Methods
"public-method", // = ["public-static-method", "public-instance-method"]
"protected-method", // = ["protected-static-method", "protected-instance-method"]
"private-method", // = ["private-static-method", "private-instance-method"]
]
メンバーグループ型(アクセシビリティとデコレーター付き)
デコレーターを持つメソッドまたはフィールドを、オプションでアクセシビリティを指定して、個別にグループ化することも可能です。
[
// Index signature
// No decorators for index signature.
// Fields
"public-decorated-field",
"protected-decorated-field",
"private-decorated-field",
"decorated-field", // = ["public-decorated-field", "protected-decorated-field", "private-decorated-field"]
// Static initialization
// No decorators for static initialization.
// Constructors
// There are no decorators for constructors.
// Getters
"public-decorated-get",
"protected-decorated-get",
"private-decorated-get",
"decorated-get", // = ["public-decorated-get", "protected-decorated-get", "private-decorated-get"]
// Setters
"public-decorated-set",
"protected-decorated-set",
"private-decorated-set",
"decorated-set", // = ["public-decorated-set", "protected-decorated-set", "private-decorated-set"]
// Methods
"public-decorated-method",
"protected-decorated-method",
"private-decorated-method",
"decorated-method", // = ["public-decorated-method", "protected-decorated-method", "private-decorated-method"]
]
メンバーグループ型(スコープあり、アクセシビリティ無視)
もう1つのオプションとして、アクセシビリティを無視して、メンバー型をスコープ (public
、protected
、private
) でグループ化することも可能です。
[
// Index signature
// No scope for index signature.
// Fields
"static-field", // = ["public-static-field", "protected-static-field", "private-static-field"]
"instance-field", // = ["public-instance-field", "protected-instance-field", "private-instance-field"]
"abstract-field", // = ["public-abstract-field", "protected-abstract-field"]
// Static initialization
// No scope for static initialization.
// Constructors
"constructor", // = ["public-constructor", "protected-constructor", "private-constructor"]
// Getters
"static-get", // = ["public-static-get", "protected-static-get", "private-static-get"]
"instance-get", // = ["public-instance-get", "protected-instance-get", "private-instance-get"]
"abstract-get", // = ["public-abstract-get", "protected-abstract-get"]
// Setters
"static-set", // = ["public-static-set", "protected-static-set", "private-static-set"]
"instance-set", // = ["public-instance-set", "protected-instance-set", "private-instance-set"]
"abstract-set", // = ["public-abstract-set", "protected-abstract-set"]
// Methods
"static-method", // = ["public-static-method", "protected-static-method", "private-static-method"]
"instance-method", // = ["public-instance-method", "protected-instance-method", "private-instance-method"]
"abstract-method", // = ["public-abstract-method", "protected-abstract-method"]
]
メンバーグループ型(スコープとアクセシビリティ付き)
3番目のグループ化オプションとして、スコープとアクセシビリティの両方を無視することも可能です。
[
// Index signature
// No grouping for index signature.
// Fields
"field", // = ["public-static-field", "protected-static-field", "private-static-field", "public-instance-field", "protected-instance-field", "private-instance-field",
// "public-abstract-field", "protected-abstract-field"]
// Static initialization
// No grouping for static initialization.
// Constructors
// Only the accessibility of constructors is configurable.
// Getters
"get", // = ["public-static-get", "protected-static-get", "private-static-get", "public-instance-get", "protected-instance-get", "private-instance-get",
// "public-abstract-get", "protected-abstract-get"]
// Setters
"set", // = ["public-static-set", "protected-static-set", "private-static-set", "public-instance-set", "protected-instance-set", "private-instance-set",
// "public-abstract-set", "protected-abstract-set"]
// Methods
"method", // = ["public-static-method", "protected-static-method", "private-static-method", "public-instance-method", "protected-instance-method", "private-instance-method",
// "public-abstract-method", "protected-abstract-method"]
]
メンバーグループ型(読み取り専用フィールド)
フィールドを readonly
修飾子でグループ化することが可能です。
[
// Index signature
"readonly-signature",
"signature",
// Fields
"readonly-field", // = ["public-static-readonly-field", "protected-static-readonly-field", "private-static-readonly-field", "public-instance-readonly-field", "protected-instance-readonly-field", "private-instance-readonly-field", "public-abstract-readonly-field", "protected-abstract-readonly-field"]
"field", // = ["public-static-field", "protected-static-field", "private-static-field", "public-instance-field", "protected-instance-field", "private-instance-field", "public-abstract-field", "protected-abstract-field"]
]
同じランクでの異なるメンバー型のグループ化
同じランクで異なるメンバー型をグループ化することも可能です。
[
// Index signature
"signature",
// Fields
"field",
// Static initialization
"static-initialization",
// Constructors
"constructor",
// Getters and Setters at the same rank
["get", "set"],
// Methods
"method",
]
使用しない場合
メンバーの一般的な順序を気にしない場合は、このルールは必要ありません。