Dart doesn't have overloading as it is our experience that overloading leads to confusion. Especially when you intend to override a method but accidentally overload it.
We think that optional arguments (named or not) are a better alternative.
Overloading is orthogonal to type annotations. You can overload based on number of arguments, but we weren't interested in having overloading.
In other words, rejecting overloading was not a consequence of the type system. It was a core principle we identified early in the design of Dart.
Cheers,
Peter
Dart doesn't permit function overloading. Does anyone know the design decision/tradeoff behind this? Does this just simplify life for dart2js, or is there some other underlying limitation? Or was it just unwanted?