Define return type based on boolean flag

Situation

# scratch.py
from typing import Union

def test_func(ret_str = True) -> Union[int, str]:
    return "Hello " if ret_str else 0

if __name__ == "__main__":
    print(test_func(True)+"World!")
    print(test_func(False)+10)

Error

scratch.py:7: error: Unsupported operand types for + ("int" and "str")
scratch.py:7: note: Left operand is of type "Union[int, str]"
scratch.py:8: error: Unsupported operand types for + ("str" and "int")
scratch.py:8: note: Left operand is of type "Union[int, str]"
Found 2 errors in 1 file (checked 1 source file)

Expectation

I, the programmer, know that I can expect a string from the functions as a result of the boolean flag. How would I go about clueing the static type checker into that as well. I know that I can use instanceof in the code that calls the function but that doesn't make much sense when one is guaranteed the return type due to the boolean flag.