在 Flow 中使用 Promise 作为返回类型
Posted
技术标签:
【中文标题】在 Flow 中使用 Promise 作为返回类型【英文标题】:Using Promise as return type in Flow 【发布时间】:2016-12-08 09:51:42 【问题描述】:我正在使用 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,但不适用于本地。对这个问题有任何想法吗?
【问题讨论】:
【参考方案1】:根据流程变更日志,v0.28.0 中引入了一项变更,使类型参数显式化。将返回类型显式设置为 Promise<any>
应该可以解决您的问题。
或者,您可以将以下标志设置为 false,尽管这是一个临时标志,将来会被删除
experimental.strict_type_args=false
https://github.com/facebook/flow/blob/master/Changelog.md#v0280
【讨论】:
请原谅我的无知,但我一直试图在 Flow Docs (flow.org/en/docs/types) 中找到 Promise 类型的文档,但我找不到任何东西。它记录在哪里? @Leonardo 我也有同样的情况,你找到上面的文档了吗? @Noitidart 之类的,我不得不打开一个issue on github,他们将我指向实现 Promise 类型的代码。显然代码存在,但没有记录:\【参考方案2】:我猜这是前段时间想出来的,正确答案是本地和在线流解释器之间的版本不匹配。
但是,由于在查找如何对 Promise 进行 Flow 注释时,这个问题出现在搜索结果的顶部附近,因此可能值得一提的是,针对这些类型的情况的解决方法是将 Promise 解析为的 Flow 类型指定为流量角括号参数。
在这种情况下,在 Promise 注释中添加“any”可以消除错误,例如...
function process(callback:Function):Promise<any>
return new Promise((r,re) => callback)
在here as well for another example 的文档中
【讨论】:
以上是关于在 Flow 中使用 Promise 作为返回类型的主要内容,如果未能解决你的问题,请参考以下文章