2016-12-04 15 views
1
type hof = (f:Function) => Function; 

type ty_MiddleWare = (store:StoreType) => hof; 

高次関数はどのように入力できますか?関数を返す関数を返す関数?フロータイプ - 高次関数 - カリング

thisコードが安全であるようにしようとしており、上記の試みはフローによって受け入れられません。問題は、カリー化された関数を使用するときに発生します。

これは私がty_MiddleWareを使用するindend方法です:

const addLoggingToDispatch = (store) :ty_MiddleWare=>{ 
    return (next:Function)=>{ 
    return (action)=>{ 
     console.group(action.type); 
     console.log('%c prev state','color: gray', store.getState()); 
     console.log('%c action','color: blue',action); 
     const returnValue=next(action); 
     console.log('%c next state','color: green',store.getState()); 
     console.groupEnd(); 
     return returnValue; 
    }; 
    }; 
}; 
+1

であると宣言していますか?特に動作しないコードはありますか?私は[Try Flow](https://flowtype.org/try)サイトであなたのサンプルを試したところ、「No errors」と表示されます。問題を再現する[mcve]を書くことができますか(また、フローまたはそれは最新ですか?) – Aurora0001

+0

ありがとうございます、明らかに、これは 'addLoggingToDispatch'なしで動作します。これについて考える必要があります... – jhegedus

+0

すべてのもの(' addLoggingToDispatch'を含む)はフローのチェックを貼り付けたときに渡されたようです(そしてダミーの 'StoreType'を作成しました)。多分それは考慮すべきものですか? – Aurora0001

答えて

0

あなたが意味するものではありません。: const addLoggingToDispatch:ty_MiddleWare = (store) => {

あなたが書いたとおりに、addLoggingToDispatchreturnあなたのty_MiddleWareタイプです。私のやり方では、addLoggingToDispatchty_MiddleWare