Careeroza
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