Use np.dtype with explicit type argument rather than just using np.dtype with implicit Any type argument.
Existing type annotation used np.dtype assuming type argument "Any" will be used on type checking. but some type checker such as pyright with the highest type checking mode will complain about using generic type with implicit Any type argument.

so, I went through all usages of np.dtype in type annotation and added type argument explicitly. Probably there will be more case of using generic type in type annotation without explicit type arguments, but I only audited np.dtype case.

related issue in pylance - https://github.com/microsoft/pylance-release/issues/1968

Hello @heejaechang! Thanks for updating this PR. We checked the lines you've touched for [PEP 8](https://www.python.org/dev/peps/pep-0008) issues, and found:





























There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers: 

##### Comment last updated at 2022-04-12 20:54:53 UTC it looks like [np.generic] throws on runtime if version < 3.9. it looks like we can't have it in pandas until people move to >= 3.9 > it looks like [np.generic] throws on runtime if version < 3.9. it looks like we can't have it in pandas until people move to >= 3.9

You could try defining a new type `NpGenericDtype` in `_typing.py` that is `np.dtype` if python <= 3.8, and `np.dtype[np.generic]` if python >= 3.9, then replace all the `np.dtype` references in the code to use `NpGenericDtype`, and then you'd have something that would possibly work with python 3.8 and 3.9.

So in `_typing.pyi`, you'd do:
```python
from pandas.compat import PY39
```
then
```python
if not PY39:
    NpGenericDtype = np.dtype
else:
    NpGenericDtype = np.dtype[np.generic]
```

I think that will work.
