Typescript没有深入的代码分析getter函数的返回值

时间:2018-07-30 20:32:58

标签: typescript

Typescript 2.9,不了解深入的代码分析,它始终向我显示诸如[ts] Object is possibly 'null'.处的this.parentElement.value这样的错误。但是实际上有一个检查,尽管是通过属性访问器进行的。

有什么更好的方法来处理这样的事情?

class Node {

  parentElement: Node | null;

  get value() {
    return this.isRootElement ? 4 : this.parentElement.value;
  }

  get isRootElement() {
    return !this.parentElement;
  }
}

1 个答案:

答案 0 :(得分:0)

不是。狭窄的分析不会通过函数,除非如果实施了this suggestion,则可能会以有限的方式进行。在您的示例中,仅内联!this.parentElement似乎还不错。使用用户定义的类型防护的另一种选择,对于这个小例子来说,这对我来说似乎不值得:

class Node {

  parentElement: Node | null;

  get value() {
    return !this.isNonRootElement() ? 4 : this.parentElement.value;
  }

  isNonRootElement(): this is Node & {parentElement: Node} {
    return this.parentElement != null;
  }
}

如果您有一个更复杂的示例,请分享一下,人们也许还能找到其他解决方法。