Learning it is easy and using it is also easy if you stay away from: 1. Meta programming 2. Methods that are returning different results based on some conditions.
the second case it can be handled by Sorbet but it makes the type more complex.
I find this a nice side effect of Sorbet: - the moment I start fighting the types or feeling to add many T.any it is a signal to me that I should split my methods/objects
Some things that I found useful:
- I started to like T.enum, T.struct and somehow I am feeling them missing now in a normal Rails project.
- I also like T.let as it helps with object shapes and memoization.
- It also solves the inheritance and there is no need to discuss what exception to throw when you want to define a method that should be implemented in
- I would recommend the gem sorbet-results that adds a simple typed monad
- It helps a lot refactoring
To get the full benefits always try to make your files with typed:strict and of course use tapioca with Rails