我似乎是在误解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()