【发布时间】:2017-09-18 02:05:20
【问题描述】:
在使用打字稿编写的 Angular 组件中,可以将类成员(变量)声明为构造函数的参数。我的问题是为什么要这样做。
为了清楚起见,请参阅下面的 sn-ps。两者具有相同的含义。
- 第一种是使用依赖注入机制定义私有成员的经典方法(在大多数 OO 语言中都是如此)。
- 如果我没记错的话,后者是 TypeScript 的特殊性。
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 的人来说更清晰、更容易理解。
所以,我想知道是否有任何特殊的原因,除了更短(这并不重要,因为代码最终会被缩小/丑化),使用后者。谢谢。
【问题讨论】:
-
这与 Angular 本身无关。
标签: angular typescript dependency-injection