2017-12-13 10 views
0

type:stringの代わりに、reducer:functionが新しい状態を取得するためにレデューサーで呼び出されるようにReduxを修正したとします。ジェネリックのタイプチェックを同じようにしながら同じになるように2回使用する方法

ここで私がチェックしたいのは、私が渡しているペイロードがレデューサーの2番目のパラメーターと互換性があるということです。 コードを見て、次の遊び場とコメントを見てください。 2つのペイロードが異なる値を持つことができますどのような

Typescript Playground Link

interface Action<T> { 
    reducer: (state: object, payload: T) => object, 
    payload: T 
} 

type Dispatch = (action: Action<any>) => void 

。 私が作成しようとしているのは、ペイロードが、リデューサーが期待している正しいフォーマットであるかどうかをチェックするタイプチェックされたコードです。

何上記に変換すると、このです:

type Dispatch2 = (action: { 
    reducer: (state: State, payload: any) => State, 
    payload: any 
}) => void 

代わりに2つのペイロードのは、どのように、私は彼らが関係なく、彼らが実際が何であれ、同じ型であることにしたいです。

答えて

2

あなたは、一般的な関数のシグネチャを使用することができ、その後、コンパイラが良いと考えタイプのチェックを行います。

type Dispatch = <T>(action: Action<T>) => void 

Link to updated code

関連する問題