TypeScript:可选链操作符(?.)

介绍

用于安全访问嵌套对象的 属性 或 方法,避免因中间层级为 null 或 undefined 导致的报错。

即:如果 ?. 左侧的值为 null/undefined,则直接返回 undefined,不再执行后续访问;

例子

有下面嵌套对象

const user = {
  name: "张三",
  address: {
    city: "北京",
    street?: "朝阳路"
  }
};

访问嵌套可选属性

const street = user.address?.street; // 安全获取 street,返回 "朝阳路"
const zipCode = user.address?.zipCode; // 无 zipCode,返回 undefined

访问数组元素

const arr: number[] | undefined = [1, 2, 3];
const first = arr?.[0]; // 返回 1;若 arr 为 undefined,返回 undefined

调用可选方法

const fn: (() => string) | undefined = () => "hello";
const result = fn?.(); // 调用 fn,返回 "hello";若 fn 为 undefined,返回 undefined

对比传统判空(繁琐)

const streetOld = user.address && user.address.street;

原文出处:/show_1GW2QbvKnd8v.html