Here is the code I'm reviewing...
import { Observable } from 'rxjs/Rx';
// reducer
import { playerRegister, PlayerState } from './player';
export function getPlayer$ (state$: Observable<MyAppState>): Observable<PlayerState> {
return state$.select(state => state.player);
};
Syntactically, the dollar ($) character has no special meaning in JavaScript identifiers.
It is, however, sometimes used by convention to indicate that a variable holds an Observable or that a function will return an Observable.
This is a code convention named Finnish Notation, apparently due to the origin of the developer that is attributed for first using it. It's used to indicate the Observable type of a variable or function.
The idea is that an Observable usually represents a stream of multiple Values and a pluralized variable / function name would indicate this. To not be confused with array variables (which are usually also pluralized), the $ character is used instead of the s. When reading the variable, you'd read the $ as an s.
When naming an array, you'll most likely use the proper plural form of a single element's name, as in:
const pets = ['cat', 'dog', 'turtle']
While, if you had an observable that emitted those three values, you'd use:
const pet$ = from(['cat', 'dog', 'turtle']) // read: pets
It's up to you and your team whether you want to use it. I guess there is no explicit consensus as of now, so you can have a long and meaningful argument about it ;-). There are already tslint rules available that allow you to enforce your decision.
I'm not sure if it's used more widely than within the RxJS community, but within this community it's commonly used to indicate that a variable is a stream (i.e. an Observable) or that a function returns such a stream.