コンストラクターでプロバイダーをインスタンス化するためだけにプライベート アクセス指定子を使用するのはなぜですか? プライベート アクセス指定子のみを使用する特定の理由はありますか?
個人注射
constructor(private service: InjectedService)
公衆注射
constructor(service: InjectedService)
コンストラクターでプロバイダーをインスタンス化するためだけにプライベート アクセス指定子を使用するのはなぜですか? プライベート アクセス指定子のみを使用する特定の理由はありますか?
個人注射
constructor(private service: InjectedService)
公衆注射
constructor(service: InjectedService)
private を使用すると、次のことを行う代わりに簡略化が行われます。
constructor(service: InjectedService) {
this.service = service
}
あなたはできる:
constructor(private service: InjectedService) {}
違いはprivate
、フィールドが非公開になることです。つまり、外部の TypeScript コードからはアクセスできません。
TypeScript は JavaScript にコンパイルされ、JavaScript にはプライベート フィールドの概念がないため、ビューを含む外部からアクセスできますが、サービスが.. . クラスに対してプライベートであるため、ビューを含むクラス自体の外で使用しないでください。ところで、テンプレートを JavaScript コードにコンパイルするために Angular が間もなく提供するオフライン コンパイラは、ビューがプライベート フィールドを使用する場合、ビューのコンパイルを拒否すると思います。
一般に、オブジェクト指向では、private がフィールドのデフォルトであるべきです: クラスの実装をリファクタリングし、そのクラスを使用する外部コードを壊すことなく内部を変更できるように、可能な限り少数のフィールドを公開する必要があります。パブリック API で。