Objects and Interfaces
Record Lookup
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
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}`);
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
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
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
daystarts as"tue".studyMinutesmapsmonto30,tueto45, andwedto60.minutes = studyMinutes[day]reads45.hours = minutes / 60becomes0.75.- The program prints
tue: 45 minutesandhours=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.