Utility type Partial
accepts any other type or interface. Returned interface contains all fields from original one, but they're all marked as optional.
interface RequiredType { name: string, age: number } type PartialType = Partial<RequiredType>; const partialObject: RequiredType = {} // error - name and age are required so must be initialized const partialObject: PartialType = {} // no error - name and age are optionals so doesn't have to be initialized