Dart 1.x had a interesting theory which I think can be described as follows:
Types are just for documentation and analysis. They can be considered a form of annotation (among annotation generally).
Dart is pure Objects. Objects respond to messages at runtime.
Type annotations have no semantic runtime meaning and are not used for performance.
Also there were ideas from the Smalltalk/Newspeak tradition re modularity and dependency - and how they worked with a dynamic language.
Will this core theory re type annotations still apply going forward.
K.