Every other answer in this thread makes ugly tooltips, here is one that doesn't
export type Overwrite<T, R> = { [K in keyof T]: K extends keyof R ? R[K] : T[K] };