javascript 中关于参数的奇怪语法

strange syntax in javascript about the argument

任何人都可以对以下语法给出一些解释:

clear: function(callback?: ?(error: ?Error) => void): Promise {
  // balabala here
}

有人可以帮忙吗?

它们是流程声明 (http://flowtype.org),其中可能存在回调 and/or 错误并且 return 是 Promise。

你可以调用clear() 例如:

/* flow */
...
    clear((data) => {
      ...do something with *data*, like resolve the promise ...
    }, (error) => {
      ...handle *error*, like reject the promise ...
    })
...

它会 return 你一个 Promise 对象。