Optional Chaining
Safely access nested properties with ?.
const user = {
name: "Alice",
address: {
city: "NYC",
},
logs: [{ ts: 1700000000, msg: "hello" }],
};
// Before: long && chain
const oldCity = user && user.address && user.address.city;
// With optional chaining
console.log(user?.address?.city); // "NYC"
console.log(user?.company?.name); // undefined (no throw)
console.log(user?.logs?.[0]?.msg); // "hello"
console.log(user?.logs?.[99]?.msg); // undefined
// Optional method call
const maybeCallback = undefined;
maybeCallback?.("ignored"); // safe, no-op
// Pair with nullish coalescing for defaults
const displayName = user?.profile?.name ?? "Anonymous";
console.log(displayName);