この質問に答えるために言うべきことがたくさんあります、これらは私の心に飛びついた最初の考えです:
private
何よりもまず、これはコンパイル時の構造にすぎないことに注意してください-実行時に強制することはできません(関連する議論については、こことここを参照してください)。そのprivate
ため、セキュリティの目的で何らかの形で有用であるという概念を誤解しないでください。それは単にそれが何であるかではありません。
それはカプセル化についてであり、コンポーネントにカプセル化したいフィールドまたはメソッドがあり、それがどこからもアクセスされるべきではないことを明確にしている場合、絶対にそれを作成する必要がありますprivate
。それprivate
が理由です。それはあなたがそれを置いたものは何でもクラスの外から触れられるべきではないというあなたの意図を示しています。
同じpublic
ことがpublic
当てはまります。これもコンパイル時のみの構文なので、クラスメンバーがデフォルトでtrueであるにもかかわらず、実行時にまったく意味がありません。ただし、クラスのAPIの一部として明示的に外部に公開するつもりのメンバーがある場合は、public
この意図を示すために必ずメンバーを作成する必要があります。それpublic
が目的です。
これはすべてTypescript全般に当てはまります。具体的には、Angularでは、コンポーネントクラスにパブリックメンバーを配置するための確かに有効なユースケースがあります。たとえば、コンテナー/コンポーネント(別名smart / dumb)パターンを実装する場合、「dumb」の子がコンストラクターインジェクションを介して「スマート」な親を注入します。親のメンバーが子供に触れてはならないこと、および触れてはいけないことについて意図を伝えることが非常に重要です。それ以外の場合は、親の酒棚で馬鹿な子供が浮気しているのを見つけても驚かないでください。
だから、あなたの質問への私の答え:
以下のように、常にそれらすべてにプライベートを追加する必要がありますか?
強調しないです。常に追加する必要はありません。private
キーワードを追加すると、キーワードの目的が損なわれます。キーワードをどこに置いても意図がわからなくなるためです。どこにも置かない方がよいでしょう。