Подтвердить что ты не робот

Angular2 стиль руководства - свойство со знаком доллара?

Посмотрев на angular2 пример кода, мы видим некоторые общедоступные свойства со знаком $:

  <....>
  private missionAnnouncedSource = new Subject<string>();
  private missionConfirmedSource = new Subject<string>();
  // Observable string streams
  missionAnnounced$ = this.missionAnnouncedSource.asObservable();
  missionConfirmed$ = this.missionConfirmedSource.asObservable();
  <....>

Кто-нибудь может объяснить:

  • почему используется $(в чем причина этой нотации? всегда используйте это для общедоступных свойств)?
  • используются общедоступные свойства, но не методы (например, missionAnnouncements(), missionConfirmations()) - снова это соглашение для приложений ng2?

Кажется, что в этом руководстве нет ничего в этом руководстве?

4b9b3361

Ответ 1

$suffix (популяризированный Cycle.js) используется, чтобы указать, что переменная является Observable. Это может быть сделано и в официальном руководстве по стилю, но он еще не существует

Подробнее здесь: Что означает знак суффикса доллара $?

Ответ 2

Я не видел этого $ в руководстве по стилю, но видел, что он часто используется для общедоступных свойств, которые ссылаются на наблюдаемые, на которые можно подписаться.

Ответ 3

Парадигма имен имен $возникла у Андре Сальца и предлагает плюрализировать все имена переменных, которые содержат наблюдаемые или потоки.

getAll(): Observable<Zone[]>{
    let zone$ = this.http
      .get(`${this.baseUrl}/zones`, {headers: this.getHeaders()})
      .map(mapZone);
      return zone$;
  }

Другой подход заключается в плюрализации имен переменных, которые содержат наблюдаемые или потоки с символом юникода, который соответствует последней букве слова. Это устраняет проблему словами, которые не имеют множественного значения с помощью "s".

mouse$ vs mic€

Ни одно из этих соглашений об именах не содержится в официальном руководстве по стилю Angular. Использование одного или другого (или ни одного) полностью зависит от личных предпочтений.

Ответ 4

Я видел, что переменные заканчиваются на $ при чтении официального учебника героя:

<div id="search-component">
  <h4>Hero Search</h4>

  <input #searchBox id="search-box" (keyup)="search(searchBox.value)" />

  <ul class="search-result">
    <li *ngFor="let hero of heroes$ | async" >
      <a routerLink="/detail/{{hero.id}}">
        {{hero.name}}
      </a>
    </li>
  </ul>
</div>

Посмотрите внимательно, и вы увидите, что * ngFor выполняет итерацию над списком heroes$, не героями.

<li *ngFor="let hero of heroes$ | async" >

$- это соглашение, которое указывает, что герои $являются наблюдаемым, а не массивом.

В большинстве случаев мы не подписываемся на эти наблюдаемые переменные в компоненте. Обычно мы используем AsyncPipe для автоматической подписки на переменные Observable.

Я не нашел его в Руководстве по стилю, поскольку Angular5.1 выпустил вчера (6 декабря 2017 года).