Это потому, что вы не указали тип test
.Будет работать следующее:
from typing import List, TypeVar, Union
T = TypeVar("T")
T1 = TypeVar("T1")
def union_list(l: List[Union[T, T1]])-> Union[T, T1]:
return l[0]
# Here, specify the type of test
test = [0, "_"] # type: List[Union[int, str]]
result = union_list(test)
reveal_type(result)
# Happily answers: Revealed type is 'Union[builtins.int, builtins.str]'
Если вы не укажете тип test
, mypy выведет, что тип test
List[object]
.Если бы вы указали:
test = [0, 1]
(даже без объявления типа), mypy выведет, что тип test
равен List[int]
, а выявленный тип result
будет int
.