Я пытаюсь заставить mypy работать достаточно полно для моего проекта.
from typing import TypedDict
OurDict = TypedDict('OurDict', {'x': int})
bad: OurDict = {'y': 2} # mypy successfully marks wrong
good: OurDict = {'x': 2} # mypy likes this
def get_bad() -> OurDict:
return 234 # mypy successfully marks wrong
def get_good() -> OurDict:
res = {'x': 2}
return res # mypy successfully marks correct
def get_should_be_bad() -> OurDict:
return {'hello': 2, 'world': 1} # mypy fails to see a problem
Кажется, что mypy может определить, соответствует ли словарь определению типа, когда он объявлен встроенным, но при проверке функции возвращаемые значения он только проверяет, что возвращаемое значение является своего рода словарем, а не желаемым типом. Это просто ограничение в дизайне или я что-то не так делаю?