description |
---|
Enforce that class methods utilize `this`. |
🛑 This file is source code, not the primary documentation location! 🛑
See https://typescript-eslint.io/rules/class-methods-use-this for documentation.
This rule extends the base eslint/class-methods-use-this
rule.
It adds support for ignoring override
methods or methods on classes that implement an interface.
This rule adds the following options:
interface Options extends BaseClassMethodsUseThisOptions {
ignoreOverrideMethods?: boolean;
ignoreClassesThatImplementAnInterface?: boolean | 'public-fields';
}
const defaultOptions: Options = {
...baseClassMethodsUseThisOptions,
ignoreOverrideMethods: false,
ignoreClassesThatImplementAnInterface: false,
};
Makes the rule to ignores any class member explicitly marked with override
.
Example of a correct code when ignoreOverrideMethods
is set to true
:
class X {
override method() {}
override property = () => {};
}
Makes the rule ignore class members that are defined within a class that implements
a type.
If specified, it can be either:
true
: Ignore all classes that implement an interface'public-fields'
: Ignore only the public fields of classes that implement an interface
It's important to note that this option does not only apply to members defined in the interface as that would require type information.
Example of a correct code when ignoreClassesThatImplementAnInterface
is set to true
:
class X implements Y {
method() {}
property = () => {};
}
Example of a incorrect code when ignoreClassesThatImplementAnInterface
is set to 'public-fields'
:
class X implements Y {
method() {}
property = () => {};
private privateMethod() {}
private privateProperty = () => {};
protected privateMethod() {}
protected privateProperty = () => {};
}
class X implements Y {
method() {}
property = () => {};
}