在下面的例子中,x实际上是' boolean |的联合类型字符串'但TypeScript认为它是一个字符串。这是一个错误还是我错过了什么?
var x:string = false && "foo";
答案 0 :(得分:4)
这是一个错误还是我错过了什么
这是设计的。根据规范,来自&&
的推断类型是 last 表达式的类型。因此以下推断的类型为string
:
var x = false && "foo";
这支持常见的JavaScript模式:
var something = foo && foo.bar && foo.bar.bas;
如果something
类型为foo.bar.bas
,那么这将是很好的,这正是打字稿的推断。