Record types describe objects that map keys to values of the same type.

record `Record<string, number>` describes an object with string keys and number values.

Record Lookup

day
record.ts
Replay: real traced execution (multi-file project)
const day: string = "tue";

const studyMinutes: Record<string, number> = {
    mon: 30,
    tue: 45,
    wed: 60
};

const minutes: number = studyMinutes[day];
const hours: number = minutes / 60;

console.log(`${day}: ${minutes} minutes`);
console.log(`hours=${hours}`);
const day: string = "mon";

const studyMinutes: Record<string, number> = {
    mon: 30,
    tue: 45,
    wed: 60
};

const minutes: number = studyMinutes[day];
const hours: number = minutes / 60;

console.log(`${day}: ${minutes} minutes`);
console.log(`hours=${hours}`);
const day: string = "wed";

const studyMinutes: Record<string, number> = {
    mon: 30,
    tue: 45,
    wed: 60
};

const minutes: number = studyMinutes[day];
const hours: number = minutes / 60;

console.log(`${day}: ${minutes} minutes`);
console.log(`hours=${hours}`);
  1. day ← tue, studyMinutes ← [object Object], minutes ← 45, studyMinutes[day] ← 45

    1const day→ tue: string = "tue";  //@day="mon", "wed"23const studyMinutes→ [object Object]: Record<string, number> = {4    mon: 30,5    tue: 45,6    wed: 607};89const minutes→ 45: number = studyMinutes[day]→ 45;10const hours→ 0.75: number = minutes→ 45 / 60;1112console.log(`${daytue}: ${minutes45} minutes`);13console.log(`hours=${hours0.75}`);
    outputtue: 45 minutes
    hours=0.75
  1. day ← mon, studyMinutes ← [object Object], minutes ← 30, studyMinutes[day] ← 30

    1const day→ mon: string = "mon";23const studyMinutes→ [object Object]: Record<string, number> = {4    mon: 30,5    tue: 45,6    wed: 607};89const minutes→ 30: number = studyMinutes[day]→ 30;10const hours→ 0.5: number = minutes→ 30 / 60;1112console.log(`${daymon}: ${minutes30} minutes`);13console.log(`hours=${hours0.5}`);
    outputmon: 30 minutes
    hours=0.5
  1. day ← wed, studyMinutes ← [object Object], minutes ← 60, studyMinutes[day] ← 60

    1const day→ wed: string = "wed";23const studyMinutes→ [object Object]: Record<string, number> = {4    mon: 30,5    tue: 45,6    wed: 607};89const minutes→ 60: number = studyMinutes[day]→ 60;10const hours→ 1: number = minutes→ 60 / 60;1112console.log(`${daywed}: ${minutes60} minutes`);13console.log(`hours=${hours1}`);
    outputwed: 60 minutes
    hours=1

Follow the Lookup

  1. day starts as "tue".
  2. studyMinutes maps mon to 30, tue to 45, and wed to 60.
  3. minutes = studyMinutes[day] reads 45.
  4. hours = minutes / 60 becomes 0.75.
  5. The program prints tue: 45 minutes and hours=0.75. | day | minutes | hours | | --- | --- | --- | | mon | 30 | 0.5 | | tue | 45 | 0.75 | | wed | 60 | 1 |

Exercise: record.ts

Reproduce tue: 45 minutes and hours=0.75, then use the pinned days mon and wed to predict each minutes and hours value.