在Prom中使用Promise作为返回类型

时间:2016-08-02 21:20:05

标签: javascript flowtype

我正在使用Flow 0.30.0。我有一个返回承诺的函数:

function process(callback:Function):Promise {
  return new Promise((r,re) => callback)
}

Flow引发了一个错误,抱怨道:

function process(callback:Function):Promise {
                                    ^^^^^^^ Promise. Application of polymorphic type needs <list of 1 argument>. (Can use `*` for inferrable ones)

这适用于Try Flow,但不适用于本地。有关这个问题的任何想法吗?

2 个答案:

答案 0 :(得分:37)

根据流更改日志,v0.28.0中引入了一个更改,它使类型参数显式化。明确将返回类型设置为Promise<any>应该可以解决您的问题。

或者你可以将以下标志设置为false,尽管这是一个临时标志,将来会删除

experimental.strict_type_args=false

https://github.com/facebook/flow/blob/master/Changelog.md#v0280

答案 1 :(得分:0)

我猜想这是在一段时间前解决的,对发生的事情的正确答案是它是本地流解释器与在线流解释器之间的版本不匹配。

但是,在寻找如何对流程注释进行流注释时,此问题在搜索结果的顶部附近出现,可能值得一提的是,针对此类情况的解决方法是将Promise解析为的流程类型指定为流量角支架参数。

在这种情况下,向Promise注释添加“ any”会使错误静音,例如...

function process(callback:Function):Promise<any> {
  return new Promise((r,re) => callback)
}

here as well for another example以上的文档中