Understanding and using TypeScript's built-in utility types
Making properties optional or required
Selecting or excluding properties from types
Creating object types and excluding union members
Extracting types from functions