Python type hints were introduced in Python 3.5 to provide optional static typing for functions and variables through annotations without runtime enforcement. Type aliases allow creating custom types through aliasing existing types and are useful for linting but do not check types at runtime, instead relying on linters to validate correct usage based on type hints. Type hints improve code clarity, readability, testability, and help prevent bugs.