This works similar to infix notation for methods. For types, infix notation can be used with any type constructor taking two arguments (in other words: any type with two generic parameters), just like the type alias in your example. As you noted, String ToErrorOr Int is equivalent to ToErrorOr[String, Int]. For any type X with parameters A and B, A X B is the same as X[A, B].
For a collection of more examples of usages for this feature, see this stackoverflow question