tgoop.com/pyproglib/7080
Last Update:
🚀 Новое предложение для Python: TypedDict с закрытыми ключами и поддержкой extra_items
TypedDict давно используется для строгой типизации словарей, где известны ключи и их типы. Но до сих пор у него было два ограничения:TypedDict
допускала дополнительные поля).
Новый PEP предлагает решить эти проблемы с помощью двух параметров:closed=True
— создаёт «закрытый» TypedDict, в котором не может быть лишних полей.extra_items=...
— позволяет указать общий тип для дополнительных ключей.
Как это решение поможет:
— Закрытые TypedDict’ы делают возможным более точный вывод типов для .items()
и .values()
.
— Теперь становится безопасным использовать in
для type narrowing.
— API-интерфейсы и legacy-код можно описывать гибко: часть ключей фиксированы, остальные — строго заданного типа.
Пример:
class Movie(TypedDict, closed=True):
name: str
director: str
m: Movie = {"name": "Blade Runner", "director": "Ridley Scott"} ✅
m2: Movie = {"name": "Blade Runner", "year": 1982} ❌ Ошибка
А вот пример с extra items:
class MovieBase(TypedDict, extra_items=int):
name: str
movie: MovieBase = {"name": "Blade Runner", "year": 1982} ✅
В итоге разработчики смогут балансировать между строгой типизацией и гибкостью — без костылей вроде
--disable-error-code=typeddict-unknown-key
.#буст