接口数据常含 null/undefined,需用对象解构+默认值安全提取;基础写法需兜底对象防止报错;处理 null 须用 ?? 归一化;嵌套解构每层需 = {};ts 类型定义可提升安全性。

接口返回数据常有字段缺失或为 null/undefined,用对象解构配合默认值能安全提取,避免运行时错误。
基础解构 + 默认值写法
直接在解构时为变量指定默认值,仅当原始属性为 undefined 时生效(null、0、false、空字符串等“falsy”值不会触发默认):
const { name = '匿名用户', age = 18, avatar } = userData || {};
注意:必须给整个解构目标提供兜底对象(如 || {}),否则 userData 为 null 或 undefined 会报错 “Cannot destructure property... of undefined”。
处理 null/undefined 字段的健壮方案
若接口可能返回 null(比如 avatar: null),需先做类型归一化再解构:
- 用逻辑运算符
??(空值合并)提前转成默认值 - 或用三元判断、函数封装统一清洗
const safeData = {
...userData,
avatar: userData?.avatar ?? '/default-avatar.png',
tags: Array.isArray(userData?.tags) ? userData.tags : []
};
之后再解构:const { name = '游客', avatar, tags = [] } = safeData;
嵌套解构 + 多层默认值
接口常返回嵌套结构(如 user.profile.city.name),可逐层设默认值:
const {
name = '未知',
profile: {
city: { name: cityName = '未填写' } = {},
bio = '暂无介绍'
} = {}
} = user || {};
关键点:
– 每层对象都要加 = {} 防止解构失败
– 属性别名(如 city.name: cityName)和默认值可共存
– 推荐用 ?? 替代 || 判断空值,避免 0、false 被误覆盖
配合 TypeScript 提升安全性
类型定义能提前暴露字段风险,解构时默认值也建议匹配类型:
interface User {
name?: string;
age?: number;
profile?: {
city?: { name?: string };
bio?: string;
};
}
const {
name = '匿名',
age = 0,
profile: {
city: { name: cityName = '未知城市' } = {},
bio = ''
} = {}
} = (userData as User) || {};
类型断言或更优的 user satisfies User(TS 4.9+)可减少运行时意外。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











