Merge Types
Reference: https://stackoverflow.com/questions/48215950/exclude-property-from-type
If 2 types have no conflict fields, use intersection operator directly
type A = { a: number };
type B = A & { b: string };
If 2 types have common fields, we need to Omit
the conflict types first
type A = { a: number; b: number };
type B = Omit<A, "a" | "b"> & { a: string; b: string };