是&&的TypeScript类型规范吗?和||正确?

时间:2013-06-21 04:47:36

标签: typescript

我几天前在TypeScript论坛上问了这个问题并没有回复,所以我想我会在这里试试。

https://typescript.codeplex.com/discussions/447628

typeScript 0.9规范说

  

&& operator允许操作数为任何类型,并产生与之相同类型的结果   第二个操作数。

例如false && "123"false,这不是字符串,这显然是错误的。

有人可以对此发表评论吗?

编辑链接的问题不是解释,它有点友好的手臂挥舞着。规范。包含一个不合理的正式错误。也就是说,类型规则应该根据其自由变量来解释表达式的所有值的类型。规范。在这一点上显然是错误的。我会考虑以下任何一个问题的答案:

  • 来自规范的理由。为什么我应该将false视为string;
  • 指向规范中的位置的指针。它说TypeScript的类型系统不健全(在这种情况下,重点是什么?);或
  • 接受我的观点是有效的,并且有一些迹象表明我应该与谁交谈以获得规范。固定的。

1 个答案:

答案 0 :(得分:2)

从打字稿编译器看到的方式来看,Spec是正确的。

例如:

var foo = false && "asdf"

为foo推断的类型是“string”。

如果您将鼠标悬停在TypeScript playground上的foo上,就可以看到它。

这有点不正确的假设。但实际上没有办法确定实际类型是什么(例如,当你在链中有函数调用,甚至任何)。在这方面,打字稿 假设 ,开发人员知道他在做什么,最后一个是他真正想要使用的。