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`で明示的にマークされたクラスメンバーを無視します。
ignoreOverrideMethods
がtrue
に設定されている場合の正しいコードの例
class X {
override method() {}
override property = () => {};
}
Playgroundで開くignoreClassesThatImplementAnInterface
型を`implements`するクラス内で定義されたクラスメンバーを無視します。指定する場合は、次のいずれかになります。
true
: インターフェースを実装するすべてのクラスを無視します。'public-fields'
: インターフェースを実装するクラスのパブリックフィールドのみを無視します。
このオプションは、型情報が必要になるため、インターフェースで定義されたメンバーにのみ適用されるわけではないことに注意することが重要です。
true
ignoreClassesThatImplementAnInterface
がtrue
に設定されている場合の正しいコードの例
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で開くclass X implements Y {
method() {}
property = () => {};
}
Playgroundで開く使用しない場合
プロジェクトで`this`スコープをTypeScriptがモデリングしにくい方法で動的に変更する場合、このルールは使用できない可能性があります。このルールを完全に無効にする代わりに、ESLintの無効化コメントを特定の状況で使用することを検討してください。