在TypeScript中手动和自动分配构造函数参数

时间:2016-10-19 07:56:55

标签: typescript

到目前为止,我总是使用以下代码来定义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上只显示第一种类型,所以我只想确保两种相同,并且我正确地使用这两种类型。

欣赏如果有人可以帮我确认一下吗?

1 个答案:

答案 0 :(得分:3)

是的,这两种写作方式实际上是一样的。您可以在GitHub上的官方语言规范here上看到与public一起使用的第二个。

所以,

class BankAccount {  
    constructor(public balance: number) {}  
}

相同
class BankAccount {
    public balance: number
    constructor(balance: number) {
        this.balance = balance;  
    }  
}

此外,有关生成的JavaScript代码的说明:使用privatepublic不会更改输出。因为在纯JavaScript中,没有“私有”成员这样的东西:您不能阻止访问对象的成员。 publicprivate的唯一效果是告诉TypeScript其他代码应该访问什么以及不应该访问什么。