I believe the recent idiomatic recommendation for the first two is to use the union type expression:
1. T | None
2. SuccessT | FailureT 1. T | None
2. SuccessT | FailureT[0]: https://docs.python.org/3/library/stdtypes.html#types-union
Note that this is not the same concept as an optional argument, which is one that has a default.
[0] https://docs.python.org/3.11/library/stdtypes.html#types-uni...[1] https://docs.python.org/3.11/library/typing.html#typing.Opti...