Il y a beaucoup à dire en réponse à cette question, ce sont les premières pensées qui me sont venues à l'esprit:
Tout d'abord, gardez à l'esprit qu'il private
ne s'agit que d'une construction au moment de la compilation - elle ne peut pas être appliquée à l'exécution (voir ici et ici pour une discussion pertinente). En tant que tel, veuillez vous désabuser de toute notion d' private
être utile de quelque manière que ce soit à des fins de sécurité. Ce n'est tout simplement pas ce dont il s'agit.
Il s'agit d'encapsulation, et lorsque vous avez un champ ou une méthode sur votre composant que vous souhaitez encapsuler, en indiquant clairement qu'il ne doit pas être consulté de nulle part ailleurs, alors vous devez absolument le faire private
: c'est à cela que private
sert: Cela signale votre intention de ne pas toucher à tout ce que vous avez mis en dehors de la classe.
Il en va de même pour public
: il s'agit également d'une construction uniquement à la compilation, de sorte que le fait que les membres de la classe soient public
par défaut, bien que true, n'a aucune signification au moment de l'exécution. Mais lorsque vous avez un membre que vous avez explicitement l'intention d'exposer au monde extérieur dans le cadre de l'API de votre classe, vous devez absolument le faire public
pour signaler cette intention: c'est à cela que public
sert.
Tout cela est applicable à Typescript en général. Dans Angular en particulier, il existe des cas d'utilisation définitivement valides pour avoir des membres publics sur des classes de composants: par exemple, lors de l'implémentation du modèle conteneur / composant (alias smart / dumb ), avec des enfants "stupides" injectant des parents "intelligents" via l'injection de constructeur, il est extrêmement important de communiquer votre intention sur ce que les membres du parent devraient et ne devraient pas être touchés par les enfants: Sinon, ne soyez pas surpris lorsque vous surprenez ces enfants stupides qui s'amusent dans l'armoire à alcool de leurs parents.
Alors, ma réponse à votre question:
dois-je toujours ajouter privé pour tous comme ci-dessous?
est un non catégorique . Vous ne devriez pas toujours ajouter private
parce que, ce faisant, vous allez à l'encontre de l'objectif du mot-clé, car il ne signale plus aucune intention si vous le mettez partout: vous pourriez aussi bien ne le mettre nulle part.