为什么打字稿会在数字上抛出错误 |未定义的比较,即使在使用可选链接之后也是如此?

2023-12-13

下面是我的代码块,如果说 Object 可能未定义,打字稿将在第二个代码块上抛出错误,在这种情况下,打字稿不应该假设它为 falsea is undefined并且不抛出错误?

const condition = true; // can be a condition that could be either true or false
const a: Array<number> | undefined;
if(condition) {
    a = [1,2,3,4,5];
}

if(a?.length > 0){
   // Have some code
}
   

这是代码块和引发的错误的链接。https://www.typescriptlang.org/play?#code/MYewdgzgLgBKYBMCWUngFwCMQgDYFMBDMGAXhigCcBXfAbgFgAoA2Q9GAQUssIE8APGGoBbTPkoA+GAB8Y1RPgBmSMPgSMmSJQAp4yVOACUMAN7MYMQmRgBtAIwAaAEyOAzI4AsAXU0BfZm ZtHUIAfgA6AjAAcygACxhpAAYTcyZLAHoMmaAAJQgA3fBgIEBEi0AR8Zj8gA

或者我们正在尝试做一个undefined > 0与数字的未定义比较,这就是它抛出错误的原因?


或者我们正在尝试对数字进行 undefined > 0 undefined 比较,这就是它抛出错误的原因?

就是这样。有关导致完全相同错误的另一个示例,请参阅:

const undef = void 0;
if (undef > 0) {
  // Have some code
}

与你无关Array<number> | undefined特别是可选链接 - TypeScript 不会让您将可能未定义的内容与数字进行比较,因为比较没有多大意义。在这种情况下,如果数组未定义,您会期望

if (a?.length > 0) {

实现还是不实现?或者你不完全确定?如果您不确定(许多人可能不会先运行代码来查看其结果),这就是此 TypeScript 错误背后的要点 - 代码令人困惑,因此 TS 会提示您修复它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么打字稿会在数字上抛出错误 |未定义的比较,即使在使用可选链接之后也是如此? 的相关文章

  • 为什么“事件”在 Chrome 中全局可用,而在 Firefox 中则不然?

    在回答另一个问题时 出现了一个与event对象在匿名函数中可用 无需传入 在 Chrome 中 下面的代码工作正常 但 Firefox 会抛出错误 document ready function uspsSideboxTrackingClo
  • 缓存 firestore 中 get 的第一个实现

    我希望 firestore 每次都先从缓存中获取数据 根据 Firestore 文档 传递 缓存 或 服务器 选项必须启用相同的功能 下面的例子 db collection cities where capital true get cac
  • 获取请求的客户端 IP 地址而不是 Cloudflare 的 IP 地址

    Cloudflare 会更改传入请求的 IP 地址 因为 Cloudflare 是我的网站和互联网之间的中间件 代理 我该怎么办获取请求的初始IP地址 而不是 Cloudflare 的 IP 地址 我听说过mod cloudflare但是这
  • 将数组转换为具有默认值的对象的更简洁方法? (洛达什可用)

    我有一个数组 比如说 a b c 我想将其转换为一个对象 该对象以数组值作为键和我可以设置的默认值 所以如果默认值是true 我希望我的输出是 a true b true c true 下面的代码是否有更简洁的版本来实现此目的 var my
  • Typescript:如何在自定义过滤器中使用角度 $filter

    如何在自定义过滤器中使用 Angular filter 如何注入 filter依赖 module Filters export class CustomFilter public static Factory return function
  • 在 IE10 中禁用捏合放大

    在 IE10 触摸模式下 我希望仅使页面的特定部分可缩放 其余的不应该 我找到了这个 http msdn microsoft com en US library ie hh772044 aspx http msdn microsoft co
  • TRACKER:错误TRK0005:无法找到:“CL.exe”。该系统找不到指定的文件

    我尝试在 Windows 8 上的 Node js 项目中执行以下命令 npm 安装 电子邮件受保护 cdn cgi l email protection 但我收到一个错误 我不知道如何处理 TRACKER 错误TRK0005 无法找到 C
  • 表单提交后 Angular2 更新视图

    我正在使用 Angular2 创建一个简单的 CRUD 应用程序 该应用程序由一个列出当前记录的表格和一个用于提交新记录的表格组成 提交表单后更新表格以反映新记录的正确方法是什么 这是我到目前为止所拥有的 export class Pers
  • 更改时触发跨度文本/html

    jQuery 或 JavaScript 中是否有任何事件在以下情况下触发span标签 text html 已更改 Code span class user location span user location change functio
  • 无法在渲染器进程中使用 Node.js API

    无法在 Electron 中使用任何与 Electron 或节点相关的操作 未定义获取错误过程 我检查了他们指导添加节点支持的各个地方 但这已经完成了 所以卡在这里 我的主要应用程序代码是 const electron require el
  • 带时间戳的 Firestore 查询

    如果它是文本字段 我可以使用 where 条件获取数据 但是当我尝试对时间戳字段和日期执行相同操作时 事情不起作用 这是我的代码 home ts firebase firestore collection cities where time
  • 从相机视图中拖动锁定在一定距离/半径处的对象

    我在场景中心有一个相机 距离相机 z 400 处有 1 个球体 其父级位于中心 我想从视图中向上 向下 向左 向右拖动球体 但同时不改变它相对于中心的 z 位置 我最终使用了另一个球体并使其不可见 添加side THREE DoubleSi
  • ReferenceError 和全局对象

    在浏览器中的 JavaScript 中window是全局对象 这意味着在全局范围内定义的每个变量都是window 那么为什么我会得到这个结果 console log window foo No error logs undefined co
  • PhantomJS 网页内存消耗?

    是否有一种编程方式 因为我想在运行时自动执行 方式来查看网页在通过 PhantomJs 运行时使用了多少内存 我也在使用 casperjs 如果这有帮助的话 我已经搜索了很多但没有找到任何方法 PhantomJs 使用 QtWebKit 因
  • 显示班级图片 10 秒

    我有下面给出的代码显示9 boxes 其值如下digital time 还有一个班级box002显示digits相当于随机选择的九个盒子的值 box002 can be dragged to digital time starting wi
  • 如何修复 getImageData() 错误画布已被跨源数据污染?

    我的代码在本地主机上运行得很好 但在网站上却不起作用 我从控制台收到此错误 对于这一行 getImageData x y 1 1 data Uncaught SecurityError Failed to execute getImageD
  • 父指令属性更改时子指令不会更新

    这是对这两个问题的后续 在父指令和子指令之间传递参数 https stackoverflow com questions 42814530 pass argument between parent and child directives
  • 在 JSP 或 Javascript 中清除浏览器缓存中的图像

    我正在为一所大学开发JSP Web 应用程序 用户页面中显示人员图片 用户注销后如何从网络浏览器缓存中清除这张图片 使用 JSP 或 JavaScript 那是不可能的 最好的选择是完全禁用相关资源的缓存 创建一个filter https
  • 如何从配置加载套接字 io 事件监听器? [复制]

    这个问题在这里已经有答案了 我有使用套接字io 的nodejs 应用程序 我将存储在 config routes js 中的所有事件侦听器 module exports routes auth login controller auth a
  • NodeJS:如何获取服务器的端口?

    您经常会看到 Node 的示例 hello world 代码 它创建一个 Http Server 开始侦听端口 然后执行以下操作 console log Server is listening on port 8000 但理想情况下你会想要

随机推荐

  • 每季度生成日期序列

    我想生成一个日期序列one quarter间隔 具有开始日期和结束日期 我有以下代码 gt seq as Date 1980 12 31 as Date 1985 06 30 by quarter 1 1980 12 31 1981 03
  • 在手机间隙运行 https 请求

    我正在iPhone中开发phone gap应用程序 我想使用JQuery getJSON url function 访问https json 请求 但仅在应用程序中它不会返回任何内容 但在正常的移动Safari中它工作正常 尽管它在phon
  • 如何使用 watchOS 2 SDK 构建应用程序

    在上次提交申请时 我们收到了此警告 WatchKit 支持无效 从 2018 年 4 月 1 日开始 提交到 Apple Watch App Store 的所有应用程序都必须使用 watchOS 2 SDK 或更高版本构建 检查您的部署目标
  • 仅沿第三维在 3D 逻辑数组中使用 Matlab“查找”

    我有一个 3D 逻辑数组 例如 A randi 0 1 x y z 其中 x y z 是整数 有没有办法找到每个 x y 沿第三维 z 的第一个真值 我可以像这样循环执行 B zeros x y for ix 1 x for iy 1 y
  • 如何将自定义ListAdapter设置为appwidget中的列表视图?

    我有一个列表视图 我需要为每个列表项提供一个自定义视图 因此我创建了一个自定义 ListAdapter 它提供了视图和布局 如下所示 但是如何使用 RemoteViews 将这个 listAdapter 设置为小部件中的 ListView
  • 程序集编号转 ascii

    我正在使用 intel 上的 at t 语法来处理汇编程序 我迷路了 如何将寄存器中的整数转换为 ASCII 数字 假设我想转换数字 10 我会将数字 10 放入寄存器 eax 中 如果我只是将数字 48 添加到 eax ascii 符号将
  • ZipArchive::close():读取错误:是一个目录

    我试图找出这个问题 但我无法想象为什么它一直发生 我正在将文件添加到 ZipArchive 当我尝试关闭它时 它收到目标是目录的错误 但我很确定事实并非如此 这是 zip 函数的代码 function create zip folder d
  • 打算打开Goog​​le身份验证器

    有没有办法通过 Intent 打开 Google Authenticator 如果是 是否可以使用已填充的密钥来打开它 以使其对用户实用 我有一个更通用的代码 因此 您只需将包名称作为参数发送给方法openApp Context conte
  • Meteor.js 应用程序模板中的多重收益

    我在布局文件中有一个用于iron router的通用 gt yield 它渲染我的页面 这些页面是模板 在我的一个页面中 我有一个侧面菜单 根据此菜单中的选择 我想在此页面中加载与此页面相关的不同模板 我怎样才能实现这个目标 我用iron
  • 使用 Matplotlib 绘制字典中的日期和关联值

    我有一本包含 Python 实例的字典datetime date和相关的数值 整数 类似这样的东西 但当然要大得多 datetime date 2016 5 31 27 datetime date 2016 9 1 87 我正在尝试使用 M
  • Jackson 动态更改 JsonIgnore

    我有一个类 里面也有变量 有时我想忽略某些字段 有时在反序列化时不想忽略 也许也在序列化时 我怎样才能在杰克逊做到这一点 对于序列化 过滤属性 博客文章应该有所帮助 反序列化方面的支持较少 因为更常见的是想要过滤掉写入的内容 一种可能的方法
  • 列表视图的自定义滚动条

    I have a task to create a custom scrollbar for list view and to my knowledge the way you can customize your scrollbar is
  • 解决 MySQL“无法重新打开表”错误

    我目前正忙于实现一个过滤器 我需要为每个要过滤的 标签 生成一个 INNER JOIN 子句 问题是 在执行完一大堆 SQL 之后 我有一个表 其中包含进行选择所需的所有信息 但对于每个生成的 INNER JOIN 我再次需要它 这基本上看
  • 如何为气泡设置边界并根据命令触发移动?

    我在 D3 中有一个气泡图 我用它来显示每组有多少个气泡 这个版本一开始有大约 500 个气泡 我的完整版本有大约 3 000 个 我在二维中挣扎 我试图让气泡在不在状态之间转换时保持原状 并且我还试图让气泡创建矩形形状 这是一个demo的
  • 表单完成后 PHP 重定向

  • 如何检查 Linux shell 上是否设置了“s”权限位?还是珀尔?

    我正在编写一些脚本来检查是否为特定文件设置了 s 权限位 例如 我的文件的权限如下 drwxr s 如果设置了该位 如何检查 bash 脚本或 perl 脚本 如果你使用 perl 那么看看perldoc u File has setuid
  • Python:类方法内的变量

    我正在学习 python 并尝试编写一个基于角色热区的伤口系统 这是我写的 别对我评价太多 class Character def init self agility strength coordination self max agili
  • 类型错误:无法读取未定义的属性“根”

    我正在尝试将 Material Ui 中的 BasicTable 函数放入我的 React js 文件中 这是我的代码 import React Component from react import Route Redirect Swit
  • axios支持Set-Cookie吗?是否可以通过axios HTTP请求进行身份验证?

    我正在尝试使用 Axios HTTP 请求调用来验证 Express API 后端 我能够在响应标头中看到 Set Cookie 但未设置 cookie 是否可以通过axios HTTP调用设置cookie Access Control A
  • 为什么打字稿会在数字上抛出错误 |未定义的比较,即使在使用可选链接之后也是如此?

    下面是我的代码块 如果说 Object 可能未定义 打字稿将在第二个代码块上抛出错误 在这种情况下 打字稿不应该假设它为 falsea is undefined并且不抛出错误 const condition true can be a co