什么Flow不喜欢这个有条件地访问对象属性的代码,只有它存在

时间:2016-06-18 14:14:42

标签: 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);

仅当x[key]确实是key的属性时才会访问x,否则使用默认值。但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

知道我做错了吗?

1 个答案:

答案 0 :(得分:3)

这看起来像Flow中的一个错误。您可能希望在github上打开问题。

同时,为key添加显式类型会因某种原因解决问题:

var key: string = ...