Real World Example

A Typed User Profile

Apps like Zomato and Uber keep a user profile with required fields, optional fields filled later, readonly IDs and a flexible preferences map.

Example

type UserProfile = {
  readonly id: string;
  name: string;
  phone: string;
  email?: string;
  savedAddresses: { label: string; city: string }[];
  preferences: Record<string, boolean>;
};

const profile: UserProfile = {
  id: "U-9001",
  name: "Priya",
  phone: "+91-98xxxxxx01",
  savedAddresses: [{ label: "Home", city: "Hyderabad" }, { label: "Work", city: "Hyderabad" }],
  preferences: { vegOnly: true, contactless: true, smsAlerts: false },
};

console.log(`${profile.name} (${profile.id})`);
console.log("Email:", profile.email ?? "not added");
console.log("Addresses:", profile.savedAddresses.map((a) => a.label).join(", "));
const enabled = Object.entries(profile.preferences).filter(([, on]) => on).map(([k]) => k);
console.log("Enabled:", enabled.join(", "));

Output

Priya (U-9001)
Email: not added
Addresses: Home, Work
Enabled: vegOnly, contactless