Static type-signatures are inevitable in general. You can see this by how even the Ruby documentation has to make up silly ad hoc notation like "→ array_of_strings", "→ matchdata or nil" etc.
(Random example): https://docs.ruby-lang.org/en/3.4/String.html#method-i-lines