Код: Выделить всё
next()Функция
Как набрать аннотацию? Рассмотрим следующее: я использую Pyright для проверки:
Код: Выделить всё
from typing import TypeVar, Union
R = TypeVar('R')
class SuperNone:
pass
class MyDict:
data = { "a": 1 }
def get(
self, key: str, default: R = SuperNone
) -> Union[R, Elem] if R == SuperNone else Elem:
try:
return self.data[key]
except KeyError:
if isinstance(default, SuperNone):
raise
else:
return default
a: int = MyDict().get("a") # Expression of type "SuperNone | int" cannot be assigned to declared type "int"
b: Union[int, str] = MyDict().get("a", "")
# vs next() function is fine:
c: int = next((x for x in [1]))
d: Union[int, str] = next((x for x in [1]), "")
Подробнее здесь: https://stackoverflow.com/questions/774 ... r-is-given