打字稿无法检测非空类型

时间:2018-12-13 16:04:59

标签: typescript

这是我在VS Code中遇到的错误:

enter image description here

我尝试了一堆不同的方法,最后是最明确的selectedDate !== null,可以这么说,嘿,它绝对不是null。我在这里想念什么?

实际代码:

selectedDate !== null ? selectedDate.getTime() === day.getTime() : false
render()方法的开头就这样实例化

var:

const { selectedDate } = this.state

状态在类中定义如下:

state = {
  selectedDate: null
}

由于此处为null,并作为const加载,我猜打字稿假定它只能为null。即使它不等于null。

3 个答案:

答案 0 :(得分:2)

您似乎已将selectedDate类型声明为null?工具提示试图向您提示有关其推断类型的信息,其显示的摘录显示为const selectedDate: null。仅当类型是null和另一种类型的并集时,才能使用null检查作为类型保护。

请注意,无法重新分配用const声明的变量,并且AFAIK变量的类型在重新分配时不会改变。

答案 1 :(得分:1)

您可以将selectedDate变量设为null吗? 如果是这样的话,实际上可以为您提供帮助

如果不是,请但要谨慎使用,并且只有当您确定变量永远不能为null时,才使用 bang 属性,如下所示:

selectedDate!.getTime ()

!之后注意selectedDate

但是正如@Duncan在评论中告诉您的那样,下一次让模式准确回答时,提供了示例代码而不是屏幕;)

答案 2 :(得分:0)

您尝试过

cp ${BANNER} $@
dos2unix <${TMPFILE} >>$@