close

class-methods-use-this

Unreleased

Configuration

rslint.config.ts
import { defineConfig, js } from '@rslint/core';

export default defineConfig([
  js.configs.recommended,
  {
    rules: {
      'class-methods-use-this': 'error',
    },
  },
]);

Rule Details

This rule requires class instance methods to use this or super. Methods that do not depend on an instance can often be ordinary functions or static methods instead.

Examples of incorrect code for this rule:

class Formatter {
  format(value) {
    return String(value);
  }
}

Examples of correct code for this rule:

class Formatter {
  format(value) {
    return this.prefix + value;
  }

  static createDefault() {
    return new Formatter();
  }
}

Options

exceptMethods

Use exceptMethods to exempt methods whose instance shape is required by an external API.

{ "class-methods-use-this": ["error", { "exceptMethods": ["render", "#reset"] }] }
class Component {
  render() {
    return null;
  }

  #reset() {}
}

enforceForClassFields

enforceForClassFields defaults to true. Set it to false to ignore arrow functions and function expressions used as instance field initializers.

{ "class-methods-use-this": ["error", { "enforceForClassFields": false }] }
class Component {
  render = () => null;
}

ignoreOverrideMethods

Use ignoreOverrideMethods to ignore TypeScript members marked with override.

{ "class-methods-use-this": ["error", { "ignoreOverrideMethods": true }] }
class Derived extends Base {
  override render() {
    return null;
  }
}

ignoreClassesWithImplements

Use "all" to ignore every member of a TypeScript class with an implements clause, or "public-fields" to ignore only its public members.

{ "class-methods-use-this": ["error", { "ignoreClassesWithImplements": "all" }] }
interface Service {
  run(): void;
}

class Worker implements Service {
  run() {}
}

Original Documentation