typescript - 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;
}
}
解决方案
并不真地。缩小分析不通过函数,除非执行此建议时可能以有限的方式进行。在您的示例中,仅内联!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;
}
}
如果您有更复杂的示例,请分享它,人们可能会找到其他解决方法。
推荐阅读
- excel - 固定范围选择
- python - rest_framework 路由器的模板中的链接
- single-sign-on - Zendesk:管理员用户无法使用企业 SSO
- java - OWLApi 访问者模式:获取超类公理
- postgresql - 可变参数的切片索引
- javascript - 如何使用正则表达式从字符串中提取 CSS3 过滤器函数
- forms - TYPO3 如何避免表单 objectID 操作?
- r - R:对每一列求和,平均覆盖值和相对平均覆盖值
- django - 我无法访问媒体文件夹中的图像,Django 项目
- django - Django3.x - Heroku - raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")