mapped types
TypeScript in Production notes about mapped types
TypeScript Mapped Types: Reuse and Transform Interface Properties
Use Pick to retain selected interface properties and their types, Partial to make them optional, and a mapped type when every property needs a new value type.

