2

几天前我在 TypeScript 论坛上问过这个问题,但没有得到回复,所以我想我会在这里尝试。

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

typeScript 0.9 规范说

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

false && "123"在 的情况下,这显然是错误的false,即 不是字符串。

任何人都可以对此发表评论吗?

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

  • 规范的理由。为什么我应该考虑false成为一个string
  • 指向规范中位置的指针。它说 TypeScript 的类型系统不健全(在这种情况下,有什么意义?);或者
  • 接受我的观点是有效的,并表明我应该与谁交谈以获得规范。固定的。
4

1 回答 1

2

从打字稿编译器的角度来看,规范是正确的。

例如:

var foo = false && "asdf"

为 foo 推断的类型是“字符串”。

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

这在某种程度上是一个不正确的假设。但实际上无法确定实际类型是什么(例如,当您在链中调用函数时,甚至是any时)。在这方面打字稿假设开发人员知道他在做什么,最后一个是他真正想要使用的。

于 2013-06-21T05:07:37.773 回答