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.