首页 > 解决方案 > Typescript 没有深入代码分析 getter 函数的返回值

问题描述

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;
  }
}

标签: typescript

解决方案


并不真地。缩小分析不通过函数,除非执行此建议时可能以有限的方式进行。在您的示例中,仅内联!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;
  }
}

如果您有更复杂的示例,请分享它,人们可能会找到其他解决方法。


推荐阅读