@chalin sorry I sometimes tend to do too many things at a time and so I take shortcuts, I'll try to express myself in a clearer way:

* Dart is **not typed (=dynamically typed)**, you can have the actual types, no types, wrong types, it will act **exactly** the same (the exact semantic is rather optionally typed),
* Type are checked only in the so called "checked" mode. Unspecified types are then inferred. I do usually type arguments & properties plus local variables where it could improve the readability.

If you wrap my previous example in a class, you'll see it will act the same: works well in normal mode, throws in checked mode.