..

Статичная типизация в 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 есть возможность описать интерфейс, в котором можно указать, какие именно ожидания у нас есть от объекта. Но описывать это долго. И получаем кучу кода для небольших правок. 

Для обеспечения стабильности приложения я доверяю автотестам.