If it can be None then the type is Optional[int] or Optional[str] as the case may be. Or I guess now int | None etc. I'm used to older versions of mypy so idk if they support that alternate syntax.
Optional[int] would seem to be preferable but it turns out it's not really an option type. Like Optional[None] being None is ambiguous.