TypeScript未检测到带有&;的联合类型&;操作人员

TypeScript未检测到带有&;的联合类型&;操作人员,typescript,Typescript,在下面的示例中,x实际上是“boolean | string”的联合类型,但TypeScript将其视为字符串。这是一个错误还是我遗漏了什么 var x:string = false && "foo"; 这是一个错误还是我遗漏了什么 这是故意的。根据规范,&中的推断类型是最后一个表达式的类型。因此,下面的推断类型是string: var x = false && "foo"; 这有助于支持通用JavaScript模式: var something = foo

在下面的示例中,x实际上是“boolean | string”的联合类型,但TypeScript将其视为字符串。这是一个错误还是我遗漏了什么

var x:string = false && "foo";
这是一个错误还是我遗漏了什么

这是故意的。根据规范,
&
中的推断类型是最后一个表达式的类型。因此,下面的推断类型是
string

var x = false && "foo";
这有助于支持通用JavaScript模式:

var something = foo && foo.bar && foo.bar.bas; 
在这里,如果
某物
的类型是
foo.bar.bas
,这正是typescript所推断的,那就太好了

这是一个错误还是我遗漏了什么

这是故意的。根据规范,
&
中的推断类型是最后一个表达式的类型。因此,下面的推断类型是
string

var x = false && "foo";
这有助于支持通用JavaScript模式:

var something = foo && foo.bar && foo.bar.bas; 

在这里,如果
某物
的类型是
foo.bar.bas
,这正是typescript所推断的,那就太好了

当你说
x
实际上是一种联合类型时。。。。这显然是你问题中的
string
类型。除非我遗漏了什么?请看,我声明它是字符串类型,但期望TS推断联合类型并抛出错误@basarat告诉我规范指定了行为,但我现在明白了。当你说
x
实际上是一种联合类型时。。。。这显然是你问题中的
string
类型。除非我遗漏了什么?请看,我声明它是字符串类型,但期望TS推断联合类型并抛出错误@basarat告诉我规范规定了行为,所以我现在明白了。谢谢!让&&always为类型:'boolean | type of last expression'似乎更正确,但如果至少在规范中详细说明了这一点,那就比bug更好了。:)谢谢让&&always为类型:'boolean | type of last expression'似乎更正确,但如果至少在规范中详细说明了这一点,那就比bug更好了。:)