我不明白 Flux 中 Dispatcher.js 中的某些语法

I don't understand some syntax in Dispatcher.js in Flux

在阅读 Flux 上的代码时,我发现有些行我不明白。

来源:https://github.com/facebook/flux/blob/master/src/Dispatcher.js

  1. 第 109 行,尖括号

    class Dispatcher<TPayload>
    
  2. 第110-115行,整个块看起来不像javascript。

    _callbacks: {[key: DispatchToken]: (payload: TPayload) => void};
    _isDispatching: boolean;
    _isHandled: {[key: DispatchToken]: boolean};
    _isPending: {[key: DispatchToken]: boolean};
    _lastID: number;
    _pendingPayload: TPayload;
    
  3. 第138行,花括号前带: void的函数

    unregister(id: DispatchToken): void {
    ...}
    

我认为这是因为某种 js 库。但我不确定。我能找到的唯一痕迹是这个 js 文件需要不变量。但是我找不到invariant的代码和文档。

不只是Javascript(查看this line), it's flow

Flow 将静态类型检查添加到 Javascript 代码。

具体来说:

  1. http://flowtype.org/docs/classes.html#polymorphic-classes
  2. 它是 es6 和 Flow 语法的混合体
  3. http://flowtype.org/docs/functions.html#type-annotating-functions