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

标签 typescript

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

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

typeScript 0.9 规范说

The && operator permits the operands to be of any type and produces a result of the same type as the second operand.

对于 false && "123" 来说,这显然是错误的,即false ,它不是字符串。

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

编辑链接的问题不是解释,而是友好的挥舞 ARM 。规范。包含一个无法证明其合理性的正式错误。也就是说,类型规则应该根据表达式的自由变量来解释表达式的所有值的类型。规范。在这一点上显然是错误的。我认为以下任何一个都可以回答我的问题:

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

最佳答案

从 typescript 编译器看来,规范是正确的。

例如:

var foo = false && "asdf"

推断 foo 的类型是“string”。

将鼠标悬停在 TypeScript playground 中的 foo 上即可看到它.

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

关于typescript - && 和 || 是 TypeScript 类型规范正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17227837/

相关文章:

javascript - 有没有办法在 Typescript 的包装函数中动态键入函数?

reactjs - 解决 yarn 工作区中的 TypeScript 依赖项

node.js - EXPORT 在部署在 pm2 中的 ts 文件 Node 应用程序中不起作用

javascript - 如何将 TypeScript 与 Vue.js 和单文件组件一起使用?

javascript - 如何打开链接并将其包含在 div 中

mongodb - 如何在 Kubernetes 中使用外部 MongoDB 服务

typescript - 如何准备 lib 以兼容 tree-shaking?

javascript - npx create-react-app <name> 在某个部分后停止运行

Angular2 - 在 react 形式上设置日期字段

javascript - Node - 使用 mocha 测试时更改输出颜色