到目前为止,我总是使用以下代码来定义TypeScript
中的构造函数。
export class DashboardComponent {
private heroService: HeroService;
constructor(heroService: HeroService){
this.heroService = heroService
}
}
但是最近当我查看Angular 2
document时,我看到语法更短,看起来像
export class DashboardComponent {
constructor(private heroService: HeroService){}
}
编译的JavaScript是相同的
var DashboardComponent = (function () {
function DashboardComponent(heroService) {
this.heroService = heroService;
}
return DashboardComponent;
}());
因为在TypeScript
docs上只显示第一种类型,所以我只想确保两种相同,并且我正确地使用这两种类型。
欣赏如果有人可以帮我确认一下吗?
答案 0 :(得分:3)
是的,这两种写作方式实际上是一样的。您可以在GitHub上的官方语言规范here上看到与public
一起使用的第二个。
所以,
class BankAccount {
constructor(public balance: number) {}
}
与
相同class BankAccount {
public balance: number
constructor(balance: number) {
this.balance = balance;
}
}
此外,有关生成的JavaScript代码的说明:使用private
或public
不会更改输出。因为在纯JavaScript中,没有“私有”成员这样的东西:您不能阻止访问对象的成员。
public
和private
的唯一效果是告诉TypeScript其他代码应该访问什么以及不应该访问什么。