У відповідь на це запитання можна сказати багато, це перші думки, які мені спали на думку:
Перш за все, майте на увазі, що private
це лише конструкція часу компіляції - вона не може бути застосована під час виконання (див. Тут та тут для відповідної дискусії). Будь ласка, відключіть себе від будь-яких уявлень про private
корисність будь-яким чином в цілях безпеки. Це просто не те, про що йдеться.
Він знаходиться близько інкапсуляції, і коли у вас є поле або метод на компоненті , який ви хочете , щоб инкапсулировать в ньому, даючи зрозуміти , що він не повинен бути доступний з будь-яких інших, то ви повинні абсолютно зробити це private
: Це те, що private
є для: Це сигналізує про ваше наміри, що все, що ви поставили, не слід чіпати з-за класу.
Те ж саме стосується public
: це теж конструкція, що відповідає лише часу компіляції, тому той факт, що члени класу public
за замовчуванням, тоді як true, має точно нульове значення під час виконання. Але коли у вас є член, який ви явно маєте намір виставити зовнішньому світу як частину API вашого класу, вам слід абсолютно зробити так, public
щоб він сигналізував про цей намір: Ось для чого public
.
Це все стосується Typescript взагалі. Зокрема, у Angular, безумовно, є дійсні випадки використання для публічних членів у класах компонентів: Наприклад, при реалізації шаблону контейнера / компонента (він же розумний / німий ), коли "німі" діти вводять "розумних" батьків за допомогою конструкторської інжекції, надзвичайно важливо донести свої наміри до того, що члени батька повинні, а чого діти не повинні чіпати: інакше не дивуйтеся, коли ви зловили тих німих дітей, які дуріли в кабінеті алкогольних напоїв батьків.
Отже, моя відповідь на ваше запитання:
я завжди повинен додавати приватне для всіх, як нижче?
є наголос ні . Ви не завжди повинні додавати, private
тому що ви перемагаєте мету ключового слова, оскільки воно більше не сигналізує про будь-які наміри, якщо ви розміщуєте його скрізь: Ви також можете нікуди не розміщувати його.