仅当未键入prop时,flow flags null访问

时间:2017-10-08 00:38:48

标签: javascript flowtype

除了类型注释之外,这两个对象是相同的。两者都将属性x初始化为null。第二个明确注释为null。但是,flow仅报告第一个对象的get()方法的错误。

为什么会这样?

var obj1 = {
    x: null,
    get() {
        return this.x.a.b.c;
    }
};

var obj2: {
    x: null,
    get: () => number
} = {
    x: null,
    get() {
        return this.x.a.b.c;
    }
};

module.exports = function () {
    return obj1.get() + obj2.get();
};

该错误仅在obj1.get上,是

  return this.x.a.b.c;
                ^ property `a`. Property cannot be accessed on possibly null value
  return this.x.a.b.c;
         ^^^^^^ null

如果x被输入为联盟,我会得到相同的结果,例如null | number

0 个答案:

没有答案