C'è molto da dire in risposta a questa domanda, questi sono i primi pensieri che mi sono balzati in mente:
Prima di tutto, tieni presente che private
è solo un costrutto in fase di compilazione - non può essere applicato in fase di esecuzione (vedi qui e qui per la discussione pertinente). Pertanto, si prega di disilludere te stesso da qualsiasi idea di private
essere utile in qualsiasi modo per scopi di sicurezza. Semplicemente non è di questo che si tratta.
Si tratta su incapsulamento, e quando si dispone di un campo o un metodo sul componente che si desidera di incapsulare in essa, mettendo in chiaro che non dovrebbe essere accessibile da qualsiasi altro luogo, allora si dovrebbe assolutamente rendono private
: Questo è quello che private
è per: Segnala il tuo intento che qualunque cosa tu abbia indossato non dovrebbe essere toccata dall'esterno della classe.
Lo stesso vale per public
: anch'esso è un costrutto solo in fase di compilazione, quindi il fatto che i membri della classe siano public
per impostazione predefinita, sebbene sia vero, ha esattamente zero significato in fase di esecuzione. Ma quando hai un membro che intendi esporre esplicitamente al mondo esterno come parte dell'API della tua classe, dovresti assolutamente farlo public
per segnalare questo intento: questo è ciò che public
serve.
Questo è tutto applicabile a Typescript in generale. In Angular in particolare, ci sono casi d'uso decisamente validi per avere membri pubblici su classi di componenti: per esempio, quando si implementa il pattern container / component (aka smart / dumb ), con bambini "stupidi" che iniettano genitori "intelligenti" tramite l'iniezione del costruttore, è estremamente importante comunicare il tuo intento su ciò che i membri del genitore dovrebbero e non dovrebbero essere toccati dai bambini: altrimenti, non sorprenderti quando sorprendi quei bambini stupidi che scherzano nell'armadietto dei liquori dei loro genitori.
Quindi, la mia risposta alla tua domanda:
devo sempre aggiungere privato per tutti loro come sotto?
è un enfatico no . Non dovresti sempre aggiungere private
perché così facendo annulli lo scopo della parola chiave, perché non segnala più alcun intento se la metti ovunque: potresti anche non metterla da nessuna parte.