1. Remove optional modifiers via mapped type:
In mapped types, “-?” removes optional, “+?” adds optional. Similarly, “-readonly” removes readonly and “+readonly” adds it.
type Requiredify<T> = { [K in keyof T]-?: T[K] };
// { a?: number } -> { a: number }