2017-11-16 9 views
1

私はflowtypesが新しく、この減速機を入力する際に​​助けを求めたいと思っています。フロータイプの減速機でエラーが発生しない

// @flow 

type State = { 
    [id: string]: boolean 
}; 

type Action = { type: 'SET_ID', id: number, someValue: string }; 

function reducer(state: State, action: Action): State { 
    switch (action.type) { 
    case 'SET_ID': 
     const { id, someValue } = action; 
     return { [id]: someValue }; 
    default: 
     (action: empty); 
     return state; 
    } 
} 

私は、文字列として数とsomeValueのようidを持つアクションを渡すんだけど、状態IDは文字列でなければならないとsomeValueのはブール値でなければなりません。フローは0エラーを生成します。何か案は ?

ありがとうございます!

答えて

0

私はまだフローを使用していますが、プロはまだありませんが、私は助けてくれるかもしれません。私がIDの変数である間、私はそれがキーを割り当てられる必要はないと思っています - ちょうど文字列です。関数に渡して使用しているため、変数に代入されるのは唯一の変数なので、今まで必要だったのは文字列だけです。この方法で数値を渡すと、数値を文字列に変換するか、最初の項目を状態の文字列の代わりに最初に変更するかを決定できるようになりました。 。

someValueはキー(文字列)の値であり、文字列でもブール値でもないはずです。

type State = { 
    [string]: string 
}; 

type Action = { type: 'SET_ID', id: number, someValue: string }; 

function reducer(state: State, action: Action): State { 
    switch (action.type) { 
    case 'SET_ID': 
     const { id, someValue } = action; 
     return { [id.toString()]: someValue }; 
    default: 
     (action: empty); 
     return state; 
    } 
} 

と減速から返されるデータの例は、このようになります。助けを

{'1231413413324': 'my new value from the reducer'} 
+0

おかげで、ええ、私は私が間違った種類を渡した場合、フローは私にエラーを与えるかどうかをチェックするために意図的に間違った種類を宣言しましたしかし、それはしません。あなたの例では、流れのreplを試して、idのtoString()を削除するとidがstringでなければならないというエラーを投げますが、そうではありません。 flow github https://github.com/facebook/flow/issues/2928でこの問題が見つかりました。これはバグです(?)。今何をすべきかわからない – Polisas

+0

私は、エラーを投げることを再確認するために私のプロジェクトをチェックしなければならないでしょう。しかし、ドキュメントでは、キー/値のペアを作成するときにIDをキーとして指定する必要はないと具体的には言います。 –

+0

ええ、ありがとう、私のレデューサーのほとんどすべてが計算されたキーであるので、私はそれらを入力することはできません。キーの命名について、ドキュメントをダブルチェックしました。そうです、それはオプションです:)。 – Polisas

関連する問題