Skip to content
NewBun 1.4.5 is out. Release notes
AphrodyBun

Linter · Rules

@typescript-eslint/no-unused-private-class-members

Disallow private class members that are never used

Only the class itself can use its private members. If it never uses one, that member is dead code, often left behind after a refactor.

The rule checks #private members, members marked private, and private parameter properties. A field that's only assigned to, or only changed with += or ++, counts as unused, because nothing ever reads the value.

Configure

Off by default. To turn it on:

bunfig.toml
[lint.rules]
"@typescript-eslint/no-unused-private-class-members" = "error" # or "warn"

Examples

Reported:

class Cache {
  #size = 0;
  private hits = 0;

  constructor(private limit: number) {}

  add() {
    this.hits += 1;
  }
}

Not reported:

class Cache {
  #size = 0;
  private hits = 0;

  constructor(private limit: number) {}

  add() {
    this.hits += 1;
    return this.#size < this.limit ? this.hits : 0;
  }
}

A private setter can run code, so assigning to it counts as a use:

class Cache {
  set #limit(value: number) {
    console.log("limit is now", value);
  }

  reset() {
    this.#limit = 0;
  }
}