親と子がサービス例を通じてコミュニケーションをとる公式ガイドよりAngular 4.0 日本語Observable ストリーム名にドル記号を使用します。
次の例の と にmissionAnnounced$
注意してください。missionConfirmed$
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
@Injectable()
export class MissionService {
// Observable string sources
private missionAnnouncedSource = new Subject<string>();
private missionConfirmedSource = new Subject<string>();
// Observable string streams
missionAnnounced$ = this.missionAnnouncedSource.asObservable();
missionConfirmed$ = this.missionConfirmedSource.asObservable();
// Service message commands
announceMission(mission: string) {
this.missionAnnouncedSource.next(mission);
}
confirmMission(astronaut: string) {
this.missionConfirmedSource.next(astronaut);
}
}
誰か説明できますか:
- なぜ
$
使用されるのですか? この表記の理由は何ですか? パブリック プロパティには常にこれを使用する必要がありますか? - パブリック プロパティは使用されますが、メソッドは使用されません (例: missionAnnouncements()、missionConfirmations())。これも Angular2 アプリの慣例でしょうか?
ベストアンサー1
$サフィックス(普及したのはサイクル)は、変数が観察可能公式スタイルガイドにも掲載される可能性がありますが、まだ掲載されていません。
詳細はこちらをご覧ください:末尾のドル記号は何を$
意味しますか?
名前の末尾にドル記号 $ を付けるのは、変数がストリームであることを示すためのソフトな規則です。これは、型を示す命名ヘルパーです。
「名前」文字列のストリームに依存するVNodeのストリームがあるとします。
const vdom$ = name$.map(name => h1(name));
map 内の関数は引数として name を受け取りますが、ストリームの名前は name$ です。命名規則では、name は name$ によって出力される値であると示されています。一般に、foobar$ は foobar を出力します。この規則がない場合、name$ の名前が単に name になると、関連する型について読者を混乱させることになります。また、name$ は、nameStream、nameObservable、nameObs などの代替案と比較して簡潔です。この規則は配列にも拡張できます。複数形を使用して、型が配列であることを示します。例: vdoms は vdom の配列ですが、vdom$ は vdom のストリームです。
更新:末尾の「$」記号の詳細については、Angular Web サイトで以下を参照してください。https://angular.io/guide/observables#observables の命名規則
2024年4月更新: リンクを更新しました