Helpers

DeepRequired

type DeepRequired<T> = T extends object 
    ? { [P in keyof T]-?: DeepRequired<T[P]> } 
    : T;

DeepPartial

type DeepPartial<T> = T extends object
  ? {
      [P in keyof T]?: DeepPartial<T[P]>;
    }
  : T;

RequiredKeys

type RequiredKeys<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;

Last updated