【问题标题】:Using Promise as return type in Flow在 Flow 中使用 Promise 作为返回类型
【发布时间】: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,但不适用于本地。对这个问题有任何想法吗?

【问题讨论】:

    标签: javascript flowtype


    【解决方案1】:

    根据流程变更日志,v0.28.0 中引入了一项变更,使类型参数显式化。将返回类型显式设置为 Promise&lt;any&gt; 应该可以解决您的问题。

    或者,您可以将以下标志设置为 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 的文档中

    【讨论】:

      猜你喜欢
      • 2019-07-01
      • 1970-01-01
      • 2021-10-17
      • 2019-09-02
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 2015-08-18
      • 2019-06-15
      相关资源
      最近更新 更多