メインコンテンツへスキップ

class-methods-use-this

クラスメソッドが`this`を使用することを強制します。

このルールは、基本のeslint/class-methods-use-thisルールを拡張します。`override`メソッド、またはインターフェースを実装するクラスのメソッドを無視するサポートを追加します。

使用方法

.eslintrc.cjs
module.exports = {
"rules": {
// Note: you must disable the base rule as it can report incorrect errors
"class-methods-use-this": "off",
"@typescript-eslint/class-methods-use-this": "error"
}
};

このルールをPlaygroundでお試しください ↗

オプション

eslint/class-methods-use-thisのオプションを参照してください。

このルールは、以下のオプションを追加します。

interface Options extends BaseClassMethodsUseThisOptions {
ignoreOverrideMethods?: boolean;
ignoreClassesThatImplementAnInterface?: boolean | 'public-fields';
}

const defaultOptions: Options = {
...baseClassMethodsUseThisOptions,
ignoreOverrideMethods: false,
ignoreClassesThatImplementAnInterface: false,
};

ignoreOverrideMethods

`override`で明示的にマークされたクラスメンバーを無視します。

ignoreOverrideMethodstrueに設定されている場合の正しいコードの例

class X {
override method() {}
override property = () => {};
}
Playgroundで開く

ignoreClassesThatImplementAnInterface

型を`implements`するクラス内で定義されたクラスメンバーを無視します。指定する場合は、次のいずれかになります。

  • true: インターフェースを実装するすべてのクラスを無視します。
  • 'public-fields': インターフェースを実装するクラスのパブリックフィールドのみを無視します。

このオプションは、型情報が必要になるため、インターフェースで定義されたメンバーにのみ適用されるわけではないことに注意することが重要です。

true

ignoreClassesThatImplementAnInterfacetrueに設定されている場合の正しいコードの例

class X implements Y {
method() {}
property = () => {};
}
Playgroundで開く

'public-fields'

ignoreClassesThatImplementAnInterface'public-fields'に設定されている場合の正しくないコードの例

class X implements Y {
method() {}
property = () => {};

private privateMethod() {}
private privateProperty = () => {};

protected privateMethod() {}
protected privateProperty = () => {};
}
Playgroundで開く

使用しない場合

プロジェクトで`this`スコープをTypeScriptがモデリングしにくい方法で動的に変更する場合、このルールは使用できない可能性があります。このルールを完全に無効にする代わりに、ESLintの無効化コメントを特定の状況で使用することを検討してください。

リソース

ESLintコアから ❤️ を込めて取得しました。