So, after some researching and read this post https://www.reddit.com/r/typescript/comments/1bjgdky/union_types_of_objects_issue/, I made this:
type A = {
propA1: string
propA2: string
}
type B = {
propB1: string
propB2: string
}
const f = (arg: A & { [key in keyof B]?: never } | B & { [key in keyof A]?: never }) => { }
f({ propA1: 'propA1', propA2: 'propA2', propB1: '' }) // error