函数名末尾的$符号表示什么?

ish*_*007 27 javascript rxjs typescript ecmascript-6

我正在检查我发现的代码

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);
};
Run Code Online (Sandbox Code Playgroud)

Rob*_*sen 72

从语法上讲,dollar($)字符在JavaScript标识符中没有特殊含义.

但是,有时会按惯例使用它来表示变量包含一个Observable或一个函数将返回一个变量Observable.

  • 我不想吹毛求疵,但 Observable 不是函数,它们内部或附加的逻辑不一定是异步执行的。 (2认同)

ggr*_*nig 25

这是一个名为Finnish Notation的代码约定,显然是由于首先使用它的开发人员的出身。它用于指示变量或函数的类型。Observable

这个想法是一个 Observable 通常代表一个多个 Value流,一个复数变量/函数名称将表明这一点。为了不要与数组变量(通常也是复数形式)混淆,使用$字符而不是s. 当读取变量,你看$作为s

例子

命名数组时,您很可能会使用单个元素名称的正确复数形式,例如:

const pets = ['cat', 'dog', 'turtle']

同时,如果您有一个发出这三个值的 observable,您可以使用:

const pet$ = from(['cat', 'dog', 'turtle']) // read: pets

是否要使用它取决于您和您的团队。我想到目前为止还没有明确的共识,因此您可以对此进行长期而有意义的争论;-)。已经有可用的tslint 规则允许您执行您的决定。

  • 感谢您不仅解释了_如何_使用它,还解释了_为什么_以及_它被称为_什么_。您的彻底性使这个答案变得更有用,并且使这个概念更容易记住! (4认同)

Mat*_*ell 12

我不确定它是否比RxJS社区更广泛地使用,但在这个社区中它通常用于表示变量是流(即Observable)或函数返回这样的流.


小智 6

对于函数来说,这意味着它返回一个可观察值。

对于变量来说,这意味着它是可观察的。

这种表示法在 Angular 项目中广泛使用,我发现它非常有用,可以快速看出它是一个可观察值,而不是实际值。