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;
}
}