Back

TypeScript Record Utility Type

`Record< K, T >` maps a set of keys (`K`) to values of the same type (`T`). It enhances type safety and simplifies common data structures.

Basic Record Usage

type User = {
    id: number;
    name: string;
  };
  
  type UserMap = Record<string, User>;
  
  const users: UserMap = {
    "u1": { id: 1, name: "Alice" },
    "u2": { id: 2, name: "Bob" }
  };
  
  console.log(users.u1.name);
  // Output: Alice

For example, `Record< string, User >` maps string keys to `User` objects, useful for dictionary-like structures.

Record for Enum-Like Structures

type Status = "pending" | "approved" | "rejected";
  
  type StatusMessages = Record<Status, string>;
  
  const messages: StatusMessages = {
    pending: "Your request is being reviewed.",
    approved: "Your request has been approved!",
    rejected: "Your request was rejected."
  };
  
  console.log(messages.approved);
  // Output: Your request has been approved!

`Record` is practical for creating fixed key-value pairs, like custom messages for different statuses.

Real-World Example: Weekly Calendar

type Day = "mon" | "tue" | "wed";
  
  type Schedule = Record<Day, string[]>;
  
  const mySchedule: Schedule = {
    mon: ["Gym", "Meeting"],
    tue: ["Coding"],
    wed: ["Review", "Team Lunch"]
  };
  
  console.log(mySchedule["tue"]);
  // Output: ["Coding"]

Using `Record` for user calendars improves both readability and type safety.

When to Use Record?

`Record` is essential for lookup tables, fixed mappings, translation files, and state management.

Back