以下代码似乎生成两个 mypy 错误:Overloaded function signatures 1 and 3 overlap with incompatible return types和Overloaded function signatures 2 and 3 overlap with incompatible return types; 但所有重载都有不同的签名 - Literal[True]、Literal[False] 和 None 不重叠。
@overload
def func_a(*, a: Literal[False] = ...) -> str:
...
@overload
def func_a(*, a: None = ...) -> str:
...
@overload
def func_a(*, a: Literal[True] = ...) -> int:
...
def func_a(*, a: Optional[bool] = None) -> str | int:
if a:
return 1
return "foo"
var1 …Run Code Online (Sandbox Code Playgroud)