Start here. This is the direct spoken answer to practice first.
Overview
A union describes possible values; control flow must establish which possibility is present before type-specific behavior is safe.
A union such as User | ServiceAccount means a value may be either type. Optional[User] means the same as User | None; it does not mean the function parameter has a default or may be omitted. Type narrowing uses evidence such as is None, isinstance, a discriminating field, or a type guard so the checker and reader know which case remains in a branch.