当前位置: 首页 > news >正文

【通俗易懂】TypeScript 增加了 JavaScript 的可选链 (?.) 和空值合并运算符 (??)理解

把这两个新符号当成“防踩雷小助手”。

  1. 可选链 ?. —— “有就继续,没有就停”
    场景:你点外卖,不确定地址里有没有 zipCode
    老写法(容易炸):

    const zip = user.address.zipCode; // 万一 address 是 undefined,直接崩
    

    新写法(安全):

    const zip = user.address?.zipCode; // 如果 address 不存在,zip 得到 undefined,不报错
    

    口诀: “遇到 ?. 就自动检测,不存在就返回 undefined,不往下继续。”

  2. 空值合并 ?? —— “给默认值”
    场景:设置昵称,如果用户没填就用“匿名”。
    老写法(坑多):

    const nick = user.nick || '匿名'; // 如果 nick 是 '' 或 0,也会变成 '匿名'
    

    新写法(更精确):

    const nick = user.nick ?? '匿名'; // 只有 null 或 undefined 才用默认,'' 和 0 会保留
    

    口诀: “只有真正的空(null/undefined)才用备胎,其他假值不算。”

一句话总结:

  • ?. 让你安全地一路点下去,不怕中途踩空。
  • ?? 让你只给真正的空值兜底,不把 0 或 ‘’ 误伤。
http://www.dtcms.com/a/347821.html

相关文章:

  • 【集合和映射】USACO Bronze 2019 December - 我在哪Where Am I?
  • 机器学习案例——预测矿物类型(模型训练)
  • DS18B20温度传感器详解
  • 电阻的功率
  • 多光谱相机检测石油石化行业的跑冒滴漏的可行性分析
  • 电蚊拍的原理及电压电容参数深度解析:从高频振荡到倍压整流的完整技术剖析
  • 决策树基础学习教育第二课:量化最优分裂——信息熵与基尼系数
  • 01_Python的in运算符判断列表等是否包含特定元素
  • [Vid-LLM] 创建和训练Vid-LLMs的各种方法体系
  • crypto.randomUUID is not a function
  • 一个备份、去除、新增k8s的node标签脚本
  • Redis(八股二弹)
  • 玳瑁的嵌入式日记D24-0823(数据结构)
  • 每日一题8.23
  • Day26 树的层序遍历 哈希表 排序算法 内核链表
  • 线程池理解
  • CMake安装教程
  • 传统 AI 与生成式 AI:IT 领导者指南
  • 10.Shell脚本修炼手册---脚本的条件测试与比较
  • 如何查看MySQL 的执行计划?
  • 引领GEO优化服务新潮流 赋能企业数字化转型
  • 信贷模型域——信贷获客模型(获客模型)
  • AI大模型 限时找我领取
  • Transformer核心概念I-token
  • Java:对象的浅拷贝与深拷贝
  • 获取高德地图经纬度解析地址的免费API接口(无调用限制)
  • JWT实现Token登录验证
  • 任务型Agent:执行计划详细设计
  • 计算机组成原理(11) 第二章 - 存储系统的基本概念
  • Introduction to GIS ——Chapter 1(Introduction)