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

时间:2017-03-29 03:06:37

标签: javascript typescript ecmascript-6 rxjs

我正在检查我发现的代码

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

4 个答案:

答案 0 :(得分:56)

从句法上讲,美元($)字符在JavaScript identifiers中没有特殊含义。

然而,按惯例,有时会使用它来表示变量包含Observable或函数将返回Observable

答案 1 :(得分:9)

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

答案 2 :(得分:8)

这是一个名为芬兰符号的代码约定,显然是由于developer的来历,即attributed的首次使用。它用于指示变量或函数的Observable类型。

这个想法是,一个Observable通常代表多个Value s 的流,而一个复数的变量/函数名称将表明这一点。为了不与数组变量(通常也是复数的)混淆,使用$字符代替s。读取变量时,您会将$读为s

示例

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

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

同时,如果您有一个观察到的物体发出了这三个值,则可以使用:

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

是否要使用它取决于您和您的团队。我猜目前还没有明确的共识,因此您可以就它进行长期而有意义的争论;-)。已经有tslint rules个可用的选项,可让您执行决定。

答案 3 :(得分:1)

对于一个函数,它意味着它返回一个可观察的对象。

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

该表示法在Angular项目中得到了广泛的应用,我发现快速了解它是一个可观察的值而不是实际值非常有用。