Skip to content

prefer-ecmascript-private-members

Prefer ECMAScript #private class members over TypeScript-only private members.

Why

ECMAScript private names enforce encapsulation at runtime instead of erasing the boundary during compilation.

Fix

Review reflection, instance escape and framework contracts before replacing TypeScript privacy with ECMAScript private names and updating references.

Examples

Before — flagged Do not erase a privacy boundary
src/vault.ts
class Vault {
private read() {
return 1;
}
open() {
return this.read();
}
}
After — preferred Use runtime-enforced privacy
src/vault.ts
class Vault {
#read() {
return 1;
}
open() {
return this.#read();
}
}

References