@typescript-eslint/no-unused-private-class-members
Disallow private class members that are never used
Also called typescript-eslint/no-unused-private-class-members, typescript/no-unused-private-class-members
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#
example.ts3 problems
class Cache {
#sizePrivate class member #size is defined but never used. = 0;
private hitsPrivate class member hits is defined but never used. = 0;
constructor(private limit: numberPrivate class member limit is defined but never used.) {}
add() {
this.hits += 1;
}
}example.tsNo problems
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:
example.tsNo problems
class Cache {
set #limit(value: number) {
console.log("limit is now", value);
}
reset() {
this.#limit = 0;
}
}