L’article explique comment masquer l’état interne d’un objet TypeScript pour éviter qu’il ne soit utilisé directement par les consommateurs. L’auteur montre que les conventions comme le préfixe underscore ne suffisent pas, car les propriétés restent accessibles. En revanche, l’utilisation d’un symbole unique comme clé de propriété permet de restreindre l’accès à cet état, car il ne peut être référencé qu’à l’intérieur du module où il est défini.
Cette technique permet de conserver un état interne tout en simplifiant l’API publique de l’objet. Les fonctions du même module peuvent accéder à la propriété via le symbole, tandis que les opérations standard comme Object.keys ou JSON.stringify l’ignorent. Cela évite que l’état interne ne devienne une partie involontaire de l’interface publique.
Cependant, les symboles n’offrent pas une protection absolue : des méthodes comme Reflect.ownKeys ou Object.getOwnPropertySymbols permettent de les découvrir. Cette approche reste donc adaptée pour décourager un accès accidentel plutôt que pour une sécurité stricte, notamment dans le cadre d’API de bibliothèques.