0

我似乎误解了流型改进的工作原理(或者我的核素/原子+流设置很愚蠢)。我想做类似以下的事情:

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.ip类型string

有没有另一种方法来细化无类型的值?

编辑:这是我所看到的tryflow 示例。

4

1 回答 1

3

不,你不能精炼any。你已经可以用它做任何事情了,那有什么意义呢?

如果您希望 Flow 验证您的代码,您应该立即将您的代码转换anymixed

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