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

问题描述 投票:22回答:2

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

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

流程引发错误,抱怨:

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

这适用于Try Flow,但不适用于本地。有什么想法吗?

javascript flowtype
2个回答
38
投票

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

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

experimental.strict_type_args=false

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


0
投票

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

但是,当在查找如何流注释承诺时,这个问题在搜索结果的顶部附近出现时,可能值得一提的是,针对这些类型的情况的修复是将Promise解析为的Flow类型指定为Flow角度括号参数。

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

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

here as well for another example的文档中

© www.soinside.com 2019 - 2024. All rights reserved.