typescriptで記述されたAngularComponentsでは、コンストラクターのパラメーターとしてクラスメンバー(変数)を宣言することができます。私の質問は、なぜそうするのかについてです。
明確にするために、以下のスニペットを参照してください。どちらも同じ意味です。
export class HeroListComponent implements OnInit {
// private member declaration
private heroService:HeroService;
// constructor signature
constructor(service:HeroService) {
// private member assignment
this.heroService = service;
}
}
export class HeroListComponent implements OnInit {
// here the private member is declared inside the constructor signature
constructor(private heroService:HeroService) { }
}
私の意見では、TypeScriptに慣れていない人にとって、最初の構文はより明確で理解しやすいものです。
それで、後者を使用するために、より短いこと(コードが最終的に縮小/醜くなるので実際には問題ではない)以外に特別な理由があるかどうか疑問に思いました。ありがとう。
編集:この回答は、2番目の例が次のようになっている元の質問(現在は編集済み)に対応しています。
export class HeroListComponent implements OnInit {
// here the private member is declared inside the constructor signature
constructor(private service:HeroService) {
this.heroService = service;
}
}
2番目の例では、実際には2つのクラスプロパティを作成しています。両方this.service
とthis.heroService
あなたのオブジェクトに存在します。
2番目の例は、次のようなものです。
export class HeroListComponent implements OnInit {
private heroService: HeroService;
private service: HeroService;
constructor(service:HeroService) {
this.service = service;
this.heroService = service;
}
}
2番目の例のスタイルは、クラスプロパティがコンストラクターのパラメーターと同じ名前を持つことができる場合に役立ちます。両方に名前heroService
を付けることができる場合は、次のようにすることができます。
export class HeroListComponent implements OnInit {
constructor(private heroService:HeroService) { }
}
利点は、それが混乱を取り除くことです。クラス内のプロパティの宣言と、そのクラスプロパティへのコンストラクターパラメーターの割り当ての両方がなくなりました。それは必ずしもあなたにとってよりきれいで読みやすいとは限りません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加