Typescript 是&;的类型脚本类型规范&;而且| |正确吗?
几天前,我在TypeScript论坛上问了这个问题,但没有得到回复,所以我想我应该在这里试试 TypeScript0.9规范说 &&运算符允许操作数为任何类型,并生成与 第二个操作数 这显然是错误的,比如说,Typescript 是&;的类型脚本类型规范&;而且| |正确吗?,typescript,Typescript,几天前,我在TypeScript论坛上问了这个问题,但没有得到回复,所以我想我应该在这里试试 TypeScript0.9规范说 &&运算符允许操作数为任何类型,并生成与 第二个操作数 这显然是错误的,比如说,false&&“123”,它是false,它不是字符串 有人能对此发表评论吗 编辑链接的问题不是解释,而是友好地挥动手臂。规范包含一个形式错误,它不能证明这一点。也就是说,类型规则应该根据自由变量解释表达式的所有值的类型。在这一点上,规范显然是错误的。我会考虑以下任何一个对我的问题的回答:
false&&“123”
,它是false
,它不是字符串
有人能对此发表评论吗
编辑链接的问题不是解释,而是友好地挥动手臂。规范包含一个形式错误,它不能证明这一点。也就是说,类型规则应该根据自由变量解释表达式的所有值的类型。在这一点上,规范显然是错误的。我会考虑以下任何一个对我的问题的回答:
-
<> LI>从我为什么要考虑<代码>伪<代码>的代码中得到的理由是<代码>字符串> >;<李>
- 一个指向规范中哪里的指针。它表示TypeScript的类型系统不健全(在这种情况下,有什么意义?);或
- 接受我的观点是有效的,并表明我应该与谁谈话以修复规范
var foo = false && "asdf"
为foo推断的类型为“string”
如果你将鼠标悬停在foo上,你可以看到它
这有点不正确。但实际上无法确定实际的类型是什么(例如,当链中有函数调用时,甚至是any)。在这方面,typescript假设开发者知道他在做什么,最后一个是他真正想要使用的 这是打字脚本设计者的错误。两种任意类型的最小上界是
any
。类型系统的要点是,它应该完全指定给定表达式可以具有的值族。在这种情况下,类型规则(和编译器实现)显然都是错误的。