web-dev-qa-db-ja.com

Flowでの戻り型としてのPromiseの使用

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 で機能しますが、ローカルでは機能しません。問題のアイデアはありますか?

24

フローの変更ログによると、v0.28.0で導入された変更により、型引数が明示的になりました。戻り値の型を明示的にPromise<any>に設定すると、問題が解決するはずです。

または、次のフラグをfalseに設定できますが、これは将来的に削除される一時的なフラグです

experimental.strict_type_args=false

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

37
mike d

これは少し前に考えられていたと思いますが、起こっていたことに対する正しい答えは、ローカルとオンラインのフローインタープリターのバージョンが一致していないということでした。

ただし、Promiseにフロー注釈を付ける方法を探しているときに、この質問が検索結果の上部近くに表示されるため、これらのタイプの状況に対する修正は、Promiseが解決するFlowタイプをFlow山括弧として指定することであることを言及する価値があるでしょうパラメータ。

この場合、Promiseアノテーションに「any」を追加すると、エラーが沈黙します。 ...

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

上のドキュメントで ここでも別の例

0
shufflingb