I don't think "type unions" correspond neatly to sums. When I think of a type union in mypy, typescript, Julia, etc, those languages have Union[int, int] as equal to int.
But int + int is isomorphic to bool*int.
The unions you're talking about necessarily require a notion of subtyping, I believe.