【通俗易懂】TypeScript 增加了 JavaScript 的可选链 (?.) 和空值合并运算符 (??)理解
把这两个新符号当成“防踩雷小助手”。
-
可选链
?.
—— “有就继续,没有就停”
场景:你点外卖,不确定地址里有没有zipCode
。
老写法(容易炸):const zip = user.address.zipCode; // 万一 address 是 undefined,直接崩
新写法(安全):
const zip = user.address?.zipCode; // 如果 address 不存在,zip 得到 undefined,不报错
口诀: “遇到 ?. 就自动检测,不存在就返回 undefined,不往下继续。”
-
空值合并
??
—— “给默认值”
场景:设置昵称,如果用户没填就用“匿名”。
老写法(坑多):const nick = user.nick || '匿名'; // 如果 nick 是 '' 或 0,也会变成 '匿名'
新写法(更精确):
const nick = user.nick ?? '匿名'; // 只有 null 或 undefined 才用默认,'' 和 0 会保留
口诀: “只有真正的空(null/undefined)才用备胎,其他假值不算。”
一句话总结:
?.
让你安全地一路点下去,不怕中途踩空。??
让你只给真正的空值兜底,不把 0 或 ‘’ 误伤。