В моем контексте (работая с mongodb) я не хотите разграничить это и просто разрешить полю быть одновременно необязательным и необязательным. Этого можно достичь с помощью
Код: Выделить всё
class Struct(TypedDict):
possibly_string = NotRequired[str | None]
Когда я пытаюсь написать общий псевдоним, mypy выдает две ошибки, указанные в комментариях к коду:
Код: Выделить всё
from typing import NotRequired, Optional, TypeVar, TypedDict
T = TypeVar("T")
Possibly = NotRequired[Optional[T]]
class Struct(TypedDict):
possibly_string: Possibly[str] # Variable "Possibly" is not valid as a type [valid-type]
non_compliant: Struct = {"possibly_string": int}
compliant_absent: Struct = {} # Missing key "possibly_string" for TypedDict "Struct" [typeddict-item]
compliant_none: Struct = {"possibly_string": None}
compliant_present: Struct = {"possibly_string": "a string, indeed"}
Я ищу решение для Python3.11 или более поздней версии.
Подробнее здесь: https://stackoverflow.com/questions/779 ... d-optional