In my experience, fully type hinted libraries where the types are exposed in the documentation often end up with long and complex type hints that harm readability rather than helping. Unfortunately, I can’t find a good example to link to right now (most of the examples I tried don’t include type hints in the docs, which says something itself, IMO…)
Good (where I mean complete, flexible, and not unnecessarily restrictive) type hints are often complex, and use concepts that are not particularly obvious to people unfamiliar with type theory. Using such types in the Python documentation and help will make it much harder to claim that types are “optional”, as users will need to understand types to interpret the basic documentation.
For example, in typeshed, asyncio.as_completed is typed as
def as_completed(fs: Iterable[_FutureLike[_T]], *, timeout: float | None = ...) -> Iterator[Future[_T]]: ...
That’s not incredibly difficult if you know the concepts and a bit about generic types, but it would be pretty daunting for a newcomer wanting to learn about asyncio.
On the other hand, asyncio.gather is a huge list of overloads, with the comment:
# `gather()` actually returns a list with length equal to the number
# of tasks passed; however, Tuple is used similar to the annotation for
# zip() because typing does not support variadic type variables. See
# typing PR #1550 for discussion.
So my feeling is that while having type annotations for the stdlib is great, they are fine in typeshed, and they absolutely should not be exposed in the documentation. Narrative prose, while harder to write initially, is a far better way of explaining how to use all but the simplest functions.
Please, no. We already have enough problem with people arguing excessively (IMO) strict positions like “if it can’t be expressed in the type annotation, it should be illegal”. If we did this, IDEs would red-flag perfectly valid (but “not best practice”) use of stdlib functions, users would submit PRs with elaborate workarounds for valid code that doesn’t typecheck, CI that runs mypy as part of a lint check would either fail, or wouldn’t be using the documented stdlib annotations.