Это же не просто что-то противное, но нужное для красоты. С ними код проще.
Пишешь
def do_something(foo: Foo):
foo.
И после точки IDE выдаёт все методы типа Foo
Пишешь
def do_foo(foo: Foo):
...
def do_bar(bar: Bar):
do_foo(bar.compute())
И IDE говорит, что compute возвращает тип Х, а нужно Bar, и ты спасён от бага.
Я без типов чувствую себя так, как будто программирую на ощупь