javascript - Flow 不喜欢这段代码,它有条件地访问一个对象的属性,只有当它存在时

标签 javascript flowtype

这是我的代码:

// @flow

var x = {a: 'foo'};
var key = Math.random() > 0.5 ? 'b' : 'a';
var value = x.hasOwnProperty(key) ? x[key] : 'default';
console.log(value);

所以只有当 key 确实是 x 的属性时,x[key] 才会被访问,否则使用默认值。但是 Flow 不喜欢这样,它说:

test-flow.js:5
  5: var value = x.hasOwnProperty(key) ? x[key] : 'default';
                                           ^^^ property `b`. Property not found in
  5: var value = x.hasOwnProperty(key) ? x[key] : 'default';
                                         ^ object literal

知道我做错了什么吗?

最佳答案

这看起来像是 Flow 中的错误。您可能想在他们的 github 上打开一个问题.

同时,由于某些原因,向 key 添加显式类型可以解决问题:

var key: string = ...

关于javascript - Flow 不喜欢这段代码,它有条件地访问一个对象的属性,只有当它存在时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37897927/

相关文章:

javascript - 为什么 flowtype 认为我的变量未定义?

flowtype - 流程声明文件 - 入门

javascript - 如何使用 Flowtype 检查 Meteor 中的 Mongo 集合?

javascript - 如何根据读取的 cookie 值使超链接指向不同的 url?

javascript - 在元素列表中,将编号索引放在 id 中还是使用索引选择器?

javascript - 使用 Moment.js 或经典 JS 的日期格式,更改日期和月份的位置?

javascript - 将 JSON 数组转换为 JSON 对象序列

javascript - 调度具有不同签名的函数

javascript - Flowtype:接口(interface)不能与联合类型结合

Javascript 主体 OnClick