键入FlowType中的“任何”类型



我似乎是在误解FlowType改进的工作原理(或者我的nuclide/arom atom 流动设置是愚蠢的)。我想做以下操作:

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检查将json.ip的类型完善到string

是否有另一种方法可以完善未型值?

编辑:这是我看到的内容的一个触摸示例。

不,您无法完善any。您已经可以对此做任何事情,那是什么重点?

如果要流动验证代码,则应立即将any转换为mixed

const json: mixed = await resp.json()

最新更新