在flowtype中键入精炼“any”类型

时间:2016-12-29 15:00:39

标签: javascript flowtype nuclide-editor

我似乎误解了flowtype细化是如何工作的(或者我的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的每次使用都是&#34;不包含在流&#34;中,包括整个json.ip表达式。这是为什么?我希望typeof检查可以将json.ip的类型细化为string

还有另一种方法可以改进非类型值吗?

编辑:这是我所看到的tryflow example

1 个答案:

答案 0 :(得分:3)

不,你无法改进any。你已经可以用它做任何事了,那有什么意义呢?

如果您希望Flow验证您的代码,您应立即将any转换为mixed

const json: mixed = await resp.json()