Concept
A mapped type loops over the keys of another type to build a new one, such as making every property readonly or wrapping each in a Promise. It is how the utility types are written.
The tutor works through these with you, in conversation and code. A session ends when you have shown them, not when a video does.
A few lines that show Mapped types doing its job.
type Readonlyish<T> = { readonly [K in keyof T]: T[K] };
type Async<T> = { [K in keyof T]: () => Promise<T[K]> };
type Flags<T> = { [K in keyof T as `has${Capitalize<string & K>}`]: boolean };
interface Settings { theme: string; volume: number }
type SettingsFlags = Flags<Settings>; // { hasTheme: boolean; hasVolume: boolean }Writing a mapped type where a plain interface would be clearer. A mapped type earns its place when it tracks another type; for a fixed shape, write the shape.
Your roadmap puts these before Mapped types, unless you already know them.
Once a session shows you understand Mapped types, it comes back for review. Each review takes a minute and tells the memory model how well you still know it.
Topics that build on Mapped types.