Flow 不喜欢这个有条件地访问一个对象的 属性 的代码,只有当它存在时
What does Flow not like about this code that conditionally accesses an object's property only if it exists
这是我的代码:
// @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 = ...
这是我的代码:
// @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 = ...