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 privateessere 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 publicper 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 publicper segnalare questo intento: questo è ciò che publicserve.
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 privateperché 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.