..
Статичная типизация в Ruby
06 Mar 2025Как вы относитесь к типизации в Ruby? Я отрицательно.
Недавно в Sorbet появился упрощенный синтаксис для описания типов. https://sorbet.org/docs/rbs-support
Было:
sig { params(x: Integer).returns(String) }
def foo(x)
...
end
Стало
#: (Integer) -> String
def foo(x)
...
end
Да, описание стало проще, но писать такое все-равно долго. Это нарушение глубинной для ruby идеи - динамической типизации, duck typing.
Знаю, что в sorbet есть возможность описать интерфейс, в котором можно указать, какие именно ожидания у нас есть от объекта. Но описывать это долго. И получаем кучу кода для небольших правок.
Для обеспечения стабильности приложения я доверяю автотестам.