What does $ sign at the end of function name indicate?

JavascriptTypescriptEcmascript 6Rxjs

Javascript Problem Overview


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);
};

Javascript Solutions


Solution 1 - Javascript

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.

Solution 2 - Javascript

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.

Example

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.

Solution 3 - Javascript

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.

Solution 4 - Javascript

For a function it means it returns an observable.

For a variable it means it is an observable.

This notation is widely used in Angular projects and I find it very useful to quickly see that it is an observable and not the actual value.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionishandutta2007View Question on Stackoverflow
Solution 1 - JavascriptRobby CornelissenView Answer on Stackoverflow
Solution 2 - JavascriptggradnigView Answer on Stackoverflow
Solution 3 - JavascriptMatt BurnellView Answer on Stackoverflow
Solution 4 - JavascriptOlivier MerigonView Answer on Stackoverflow