при запуске mypy script.py --strict
, приведенный ниже код выдаст ошибку Argument 1 to "test" has incompatible type "Dict[str, object]"; expected "Dict[str, Union[str, int]]"
from typing import Union, Dict, Mapping
def test(person: Dict[str, Union[str, int]]) -> None:
pass
person = dict(
name='john',
age=10,
)
test(person)
EDIT:
Я понял, что один из способов решить эту проблему - использовать TypedDict
, как показано ниже:
from mypy_extensions import TypedDict
PersonDict = TypedDict('PersonDict', {
'name': str,
'age': int,
})
...
person: PersonDict = dict(
name='john',
age=10,
)
test(person)