Mise à jour . Méthodes privées utilisant #
sont désormais mises en œuvre. Voir ici : https://github.com/microsoft/TypeScript/pull/42458
--
Les mots-clés publics/privés TypeScript ne s'appliquent qu'à la manière dont TypeScript vérifie votre code - ils n'ont aucun effet sur la sortie JavaScript.
Selon le la spécification linguistique (pp. 9-10) :
La visibilité privée est une construction qui intervient au moment de la conception ; elle est appliquée lors de la vérification statique des types. mais n'implique aucune application au moment de l'exécution. ... TypeScript impose l'encapsulation de l'implémentation dans les classes au moment de la conception. conception (en limitant l'utilisation des membres privés), mais ne peut pas l'encapsulation au moment de l'exécution car toutes les propriétés des objets sont accessibles au moment de l'exécution. Les futures versions de JavaScript pourront fournir des propriétés des noms privés qui permettraient d'imposer l'utilisation de membres privés au moment de l'exécution. privés
Cette question a déjà été posée et a reçu une réponse ici : https://stackoverflow.com/a/12713869/1014822
Mise à jour : Cette vieille réponse reçoit encore beaucoup de trafic, il est donc utile de noter qu'en plus du lien vers la spécification du langage ci-dessus, les membres publics, privés et (maintenant) protégés sont couverts en détail dans le document TypeScript manuel chapitre sur les classes.
Mise à jour 2018 L'implémentation des champs privés ES est désormais un élément à venir sur le site TypeScript Feuille de route bien que discussion suggère qu'il s'agira d'une option privée dure parallèle, qui ne remplacera pas la mise en œuvre actuelle de l'option privée douce.
Mise à jour 2020 Exécution privée champs en utilisant le #
ont été mis en œuvre dans la version TS 3.8. Il y a une bonne discussion sur la façon dont ils fonctionnent et comment ils diffèrent des champs à la compilation avec la section private
mot-clé sur StackOverflow aquí .
Privé méthodes ont atteint le stade 3 du groupe de travail TC39. Cette fonctionnalité fait actuellement l'objet de discussions actives pour TypeScript, par exemple aquí .