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;
}
}
答案 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;
}
}
如果您有一个更复杂的示例,请分享一下,人们也许还能找到其他解决方法。