2016-10-19 1 views
2

Следующий код - это то, что я всегда использую для определения конструктора в TypeScript.Параметры конструктора вручную и автоматического назначения в TypeScript

export class DashboardComponent { 
    private heroService: HeroService; 
    constructor(heroService: HeroService){ 
     this.heroService = heroService 
    } 
} 

Но в последнее время, когда я проверяю Angular 2document, я увидел, что синтаксис короче и выглядеть

export class DashboardComponent { 
    constructor(private heroService: HeroService){} 
} 

И скомпилированный JavaScript тот же

var DashboardComponent = (function() { 
    function DashboardComponent(heroService) { 
     this.heroService = heroService; 
    } 
    return DashboardComponent; 
}()); 

Поскольку на TypeScriptdocs только показывают первый тип, поэтому я просто хочу убедиться, что два одинаковы, и я делаю правильно с оба эти типа.

Ценить Если кто-нибудь может помочь мне подтвердить это?

+1

Не делайте этого вручную: https://www.stevefenton.co.uk/2013/04/stop-manually-assigning-typescript-constructor-parameters/ – Fenton

ответ

3

Да, два способа написания это фактически то же самое. Вы можете видеть, что второй используется с public по официальной языковой спецификации here на GitHub.

Так,

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

такая же, как

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

Кроме того, записку на сгенерированный код JavaScript: Использование private или public не изменит выход. Потому что в чистом JavaScript нет такой вещи, как «частный» участник: вы не можете запретить доступ к члену вашего объекта. Единственный эффект public и private есть, говорит TypeScript, что должно и к чему не следует обращаться другим кодом.

+0

Я также нашел хороший ресурс, связанный с ярлыком TypeScript. https://angular.io/guide/displaying-data#creating-a-class-for-the-data – trungk18

Смежные вопросы