Typescript, Generics, Polymorphism.
cannot determine a type ahead of time. It can be when we receive an object through an API or want to create a new type out of an existing one not to repeat ourselves. Example of creating a new slightly changed type out of an existing one: // Mapper type Optional<T> = { [K in keyof T]?: T[K]; };