0

フロータイプのリファインメントがどのように機能するかを誤解しているようです (または、私の Nuclide/Atom + Flow セットアップがばかげているかもしれません)。次のようなことをしたいと思います。

async function getIp(): Promise<string> {
  const resp = await fetch('https://httpbin.org/ip')
  const json = await resp.json() // `json: any` at this point
  if (typeof json.ip === 'string') {
    return json.ip
  } else {
    throw new Error("Weird response.")
  }
}

API エンドポイントから JSON を取得していますが、タイプはany. ip適切な形式であること (たとえば、文字列フィールドがあること) を健全性チェックしたいと思います。ただし、Nuclide は、式json全体を含め、上記のコードで を使用するたびに「フローでカバーされていない」と警告していjson.ipます。何故ですか?typeofチェックが to の型を絞り込むことを期待していたでしょjson.ipstring

型指定されていない値を絞り込む別の方法はありますか?

編集:これは、私が見ているもののtryflowの例です。

4

1 に答える 1

3

いいえ、精製することはできませんany。あなたはすでにそれで何でもできるので、ポイントは何ですか?

Flow にコードを検証させたい場合は、すぐに次のように変換する必要がありanyますmixed

const json: mixed = await resp.json()
于 2016-12-30T13:03:02.537 に答える