2017-02-17 9 views
1

ObjectをFlowのユーザー定義の正確なタイプにキャストする方法については、私は疑問に思っています。例:フローの正確なタイプにオブジェクトをキャストすることは可能ですか?

//@flow 

type exactType = {|x : number|} 

function test(a : Object) : exactType { 
    if(typeof(a.x) === 'string'){ 
    return (a : exactType); 
    } 
    throw new Error('Incorrect type!') 
} 

このような関数を記述することは可能ですか?私。タイプチェッカーに、numberというタイプのxという名前のフィールドが1つしかないことをパラメータaに伝えることは可能ですか?

答えて

2

これを行うには安全な方法はありません。しかし、あなたは常に型チェッカーを回避するためにanyてキャストすることができます:それは危険なタイプだから

return ((a: any): exactType);

理想的には、あなたは、Objectを使用しないように、あなたのコードをリファクタリングでしょう。しかし、それが不可能な場合は、このような型チェッカーを慎重に回避することができます。

関連する問題