2017-11-08 23 views
0

現在取得中のフローエラーを理解できません。オブジェクトの配列に変換するオブジェクトのJavaScriptオブジェクト(dataObject)があるので、Object.values(dataObject)を使用します。フロー:オブジェクト型が配列と互換性がありません<mixed>

const dataObjectArray = Object.values(dataObject); 
    return dataObjectArray((data: DataObject) => { 
    const { typeA, typeB } = data; 
    return { 
     TYPE_A: typeA, 
     TYPE_B: typeB, 
    }; 
    }); 

しかし、私は、次のflowtypeのエラーを取得:その後、私は次の配列内の各オブジェクトを反復処理

flow error

私はタイプが一致するかどうかはわかりません。現在、私のDataObjectフロータイプは

type DataObject = { 
    typeA: string, 
    typeB: string, 
}; 

です。ありがとう!

答えて

1

Object.values関数の型定義は、渡された引数が値がすべて同じ型であるオブジェクトであることを知る方法がありません。 Object.values({foo: 4, bar: "str"})と同じように簡単に行うことができます。 The type definition is

(any) => Array<mixed> 

あなたがタイプArray<mixed>の値に.mapを行っていることを意味しています。

つまり、オブジェクトとして使用する場合、メソッドは機能しません。あなたの「オブジェクトのオブジェクトは」

type DataObjects = { 
    [string]: DataObject, 
} 

として入力されると仮定すると、あなたはおそらく

function values(objs: DataObjects): Array<DataObject> { 
    Object.keys(objs).map(key => objs[key]); 
} 
をやったほうが良いと思います