type IsPlainObject<T extends unknown> = T extends object ? T extends null ? never : T : never;type RemoveVoid<T> = T extends void ? never : T;type Merge<T,U> = { [K in Exclude<keyof T, keyof U>]: T[K]} & U