TypeScript中?.可选链运算符是什么含义?对应示例代码如何理解?
TypeScript 可选链代码含义说明
你贴的代码使用了 ECMAScript 2020 及以上版本支持、TypeScript 原生兼容的可选链运算符 ?.,核心作用是避免访问空值的深层属性时抛出 TypeError。
完整执行逻辑
- 第一步先校验
data是否为null或undefined:如果是,整个表达式直接短路返回undefined,不会继续访问后续属性 - 若
data不为空,继续校验data.resources是否为null或undefined:如果是,同样短路返回undefined - 若
data.resources不为空,最终取data.resources['FAQs']的值赋值给faq
这里用方括号语法访问['FAQs']和点属性写法效果完全一致,等价于data?.resources?.FAQs。
你的猜测正误修正
你的理解整体方向对,但有两个细节需要调整:
- 短路时返回值是
undefined,不是null或false,只有对应属性本身被主动赋值为null/false时,才会返回对应值- 不需要提前判断属性是否「存在」:只要上层对象不为空,哪怕
resources本身没有FAQs属性,也会正常返回undefined,不会抛报错
内容的提问来源于stack exchange,提问作者Yashvi-Mehta
相关产品推荐
相关产品推荐

