在 Flow 中使用 Promise 作为 return 类型
Using Promise as return type in Flow
我正在使用 Flow 0.30.0。我有一个 returns 承诺的函数:
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,但不适用于本地。对这个问题有什么想法吗?
根据流程更新日志,v0.28.0 中引入了一项更改,使类型参数显式化。将 return 类型明确设置为 Promise<any>
应该可以解决您的问题。
或者您可以将以下标志设置为 false,尽管这是一个临时标志,将来会被删除
experimental.strict_type_args=false
https://github.com/facebook/flow/blob/master/Changelog.md#v0280
我猜这是很久以前想出来的,正确的答案是本地和在线流解释器之间的版本不匹配。
但是,由于在寻找如何使用 Flow 注释 Promises 时这个问题出现在搜索结果的顶部附近,因此可能值得一提的是,针对这些类型的情况的解决方法是指定 Promise 解析为的 Flow 类型作为 Flow 尖括号参数。
在这种情况下,向 Promise 注释添加 "any" 可以消除错误,例如...
function process(callback:Function):Promise<any> {
return new Promise((r,re) => callback)
}
的文档中
我正在使用 Flow 0.30.0。我有一个 returns 承诺的函数:
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,但不适用于本地。对这个问题有什么想法吗?
根据流程更新日志,v0.28.0 中引入了一项更改,使类型参数显式化。将 return 类型明确设置为 Promise<any>
应该可以解决您的问题。
或者您可以将以下标志设置为 false,尽管这是一个临时标志,将来会被删除
experimental.strict_type_args=false
https://github.com/facebook/flow/blob/master/Changelog.md#v0280
我猜这是很久以前想出来的,正确的答案是本地和在线流解释器之间的版本不匹配。
但是,由于在寻找如何使用 Flow 注释 Promises 时这个问题出现在搜索结果的顶部附近,因此可能值得一提的是,针对这些类型的情况的解决方法是指定 Promise 解析为的 Flow 类型作为 Flow 尖括号参数。
在这种情况下,向 Promise 注释添加 "any" 可以消除错误,例如...
function process(callback:Function):Promise<any> {
return new Promise((r,re) => callback)
}
的文档中