* Still weak support for JSON (use Dict[str, Any])
Python 3.8 added TypedDict which finally helps this particular shortcoming.
Python 3.8 added TypedDict which finally helps this particular shortcoming.
Optional keys are also a nuisance.
if "optional_key" in my_dict:
do_something_with(my_dict["optional_key"])
Or: optional_value = my_dict.get("optional_key")
if optional_value:
do_something_with(optional value)
Works as expected. Nested optional keys can be a bit annoying, although: my_dict.get("optional_parent", {}).get("optional_child")
seems to work.If you have a dict with some keys which are optional, you need to create a separate subclass (with `total=False`) just for those optional keys.
With TypeScript, I can just use `key?: type`.
https://mypy.readthedocs.io/en/latest/more_types.html#mixing...
It's nice to see strong progress in such important areas. My post is probably overly critical, but I write Python almost every day, and maintaining a highly-typed library can be demoralizing at times.
from mypy_extensions import TypedDict
https://github.com/python/mypy_extensions