Deep partial type

TypeScript
export type DeepPartial<T> = {
  [K in keyof T]?: T[K] extends (...args: never[]) => unknown
    ? T[K]
    : T[K] extends object
      ? DeepPartial<T[K]>
      : T[K];
};

interface Config {
  server: { host: string; port: number };
  features: string[];
}

const override: DeepPartial<Config> = {
  server: { port: 8080 },
};

// override.server?.host is string | undefined