“可能是未定义的值”,如何使null安全?

时间:2016-12-20 03:23:32

标签: javascript flowtype

寻求Facebook流程的一些帮助。

我有以下代码:

function getValues(obj? : Object) {

    if (obj) {
        return Object.keys(obj).map(key => {
            return obj[key];
        });
    }

    return [];
}

流版本0.37.0出现以下错误:

65:             return obj[key];
                       ^^^^^^^^ access of computed property/element. Computed property/element cannot be accessed on possibly undefined value
65:             return obj[key];
                       ^^^ undefined

我在这里犯了错误,或者这段代码是否安全无效?

提前致谢!

1 个答案:

答案 0 :(得分:1)

Flow对优化很悲观,它认为每个函数调用都可以修改obj。至于修复方法,您可以使用const binding

function getValues(obj?: Object) {
  const o = obj
  return o ?
    Object.keys(o).map(key => o[key]) :
    []
}