angular2スタイルガイド-ドル記号付きのプロパティ?


185

見ると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アプリの規約ですか?

これに関する公式のスタイルガイドには何もないようです?

回答:


265

$サフィックスCycle.jsによってポピュレートされる)は、変数が監視可能であることを示すために使用されます。公式のスタイルガイドにもなれるかもしれませんが、まだありません

続きを読む:接尾辞付きのドル記号は$どういう意味ですか?

更新:https ://angular.io/guide/rx-library#naming-conventions-for-observablesのAngular Webサイトの末尾の「$」記号の詳細を ご覧ください。


4
公式スタイルガイドにはなりません。私はそれに100ドルをかけます。
Eric Bishard 2018年


66
@EricBishard 100 $を意味します
TabsNotSpaces

1
約束はどうですか?
galki 2018

7
仕事のセキュリティ-素人にとってコードを理解しにくくします。
java-addict301

14

$命名パラダイムはAndre Saltzに由来し、オブザーバブルまたはストリームを含むすべての変数名を複数形にすることを提案しています。

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

別のアプローチは、単語の最後の文字に一致するUnicode文字でオブザーバブルまたはストリームを含む変数名を複数形にすることです。これは、「s」で複数形化されていない単語の問題に対処します。

mouse$ vs mic€

これらの命名規則はどちらも公式のAngularスタイルガイドにはありません。どちらか一方(またはなし)の使用は、完全に個人の好みに依存します。


10
cactu $ vscactï–
BYTE RIDER

素敵なリファレンス!こちらの記事もご覧ください。私を困らせるのは、コードベース(他の同僚)でこれを実行しようとする試みを見つけてそれを間違ってしまい、サフィックスを間違った変数に付けてしまうことです。私は人々がこれを一貫性なしに使用することも見ました、その場合、それは全く意味がありません。 medium.com/@benlesh/...
エリックBishard

使用する場合は、このリポジトリのような次の命名規則をお勧めし ます。観察可能な神のために一貫している。
Eric Bishard 2018年

2
fish$vsfish€$
マーティンシュナイダー

11

アップデート https : //angular.io/guide/rx-library#naming-conventions-for-observables

AngularアプリケーションはほとんどTypeScriptで記述されているため、通常、変数が監視可能であることがわかります。Angularフレームワークはオブザーバブルの命名規則を強制しませんが、多くの場合、末尾に「$」記号が付いたオブザーバブルに名前が付けられます。

これは、コードをスキャンして監視可能な値を探すときに役立ちます。また、プロパティにオブザーバブルの最新の値を格納する場合は、「$」の有無にかかわらず同じ名前を使用すると便利です。


オリジナル

$ヒーローの公式チュートリアルを読んでいるときに変数が終わるのを見ました:

<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がheroesheroes$ではなくと呼ばれるリストを反復処理していることがわかります。

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

$は、heroes $が配列ではなく監視可能であることを示す規則です。

ほとんどの場合、コンポーネントでこれらの監視可能な変数をサブスクライブしません。通常、AsyncPipeを使用して、Observable変数を自動的にサブスクライブします

Angular5.1が昨日(2017年12月6日)にリリースされて以来、スタイルガイドでそれを見つけられませんでした。


Angular 9スタイルガイドheroes: Observable<Hero[]>;
Ricardo Saracino

9

これ$はスタイルガイドでは見ていませんが、サブスクライブ可能なオブザーバブルを参照するパブリックプロパティで頻繁に使用されているのを見ました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.