我几天前在TypeScript论坛上问了这个问题并没有回复,所以我想我会在这里试试。
https://typescript.codeplex.com/discussions/447628
typeScript 0.9规范说
&& operator允许操作数为任何类型,并产生与之相同类型的结果 第二个操作数。
例如false && "123"
,false
,这不是字符串,这显然是错误的。
有人可以对此发表评论吗?
编辑链接的问题不是解释,它有点友好的手臂挥舞着。规范。包含一个不合理的正式错误。也就是说,类型规则应该根据其自由变量来解释表达式的所有值的类型。规范。在这一点上显然是错误的。我会考虑以下任何一个问题的答案:
false
视为string
; 答案 0 :(得分:2)
从打字稿编译器看到的方式来看,Spec是正确的。
例如:
var foo = false && "asdf"
为foo推断的类型是“string”。
如果您将鼠标悬停在TypeScript playground上的foo上,就可以看到它。
这有点不正确的假设。但实际上没有办法确定实际类型是什么(例如,当你在链中有函数调用,甚至任何)。在这方面,打字稿 假设 ,开发人员知道他在做什么,最后一个是他真正想要使用的。