deny-soft-private-modifier
Ce plugin interdit le modificateur privé de TypeScript.
- ⭐️ Cette règle figure dans le Flat Config
rdlabo.configs.recommended.- ✒️ L’option
--fixde la ligne de commande peut corriger automatiquement certains problèmes signalés par cette règle.
Le modificateur private de TypeScript est appliqué uniquement à la compilation. On peut encore accéder au membre à l’exécution par la notation entre crochets ou une conversion en any. Les champs privés stricts JavaScript (#) sont protégés à l’exécution et inaccessibles depuis l’extérieur de la classe. Cette règle remplace les propriétés et méthodes private par des champs # et transforme les références this.x en this.#x.
Détails de la règle
Cette règle vérifie les motifs suivants dans les classes :
- Une définition de propriété
private(private field = ...) - Une définition de méthode
private(private method() { ... }) - Une référence
this.fieldoùfielda été déclaréprivate
Elle ne signale pas les constructeurs, car private constructor() a un autre sens : empêcher l’instanciation externe. Une propriété private readonly est signalée ; la correction supprime private, ajoute # et conserve readonly.
La correction automatique procède ainsi :
- Supprime le mot-clé
private. - Insère
#avant le nom de propriété ou de méthode. - Transforme toutes les références
this.fieldouthis.method()de la classe enthis.#fieldouthis.#method().
Exemples
Incorrect
class TokenStore {
private token = '';
private refresh() {
this.token = 'new-token';
}
}
Correct
class TokenStore {
#token = '';
#refresh() {
this.#token = 'new-token';
}
}
Options
Cette règle n’a pas d’options.
Quand l’activer
Activez cette règle lorsqu’un projet souhaite une encapsulation des membres internes de classes imposée à l’exécution. Vous pouvez l’exécuter avec --fix sur le code existant, mais elle modifie l’interface publique : tout code qui accédait à l’exécution à des membres déclarés private uniquement à la compilation cessera de fonctionner.