Actionscript 3 is a hybrid language, trying to mix mediocre static typing (like C# or Java before generics) with the dynamic typing of previous versions. It seems to me like it really tries to push you toward the static side, though. For example, in the default configuration, Flex requires type declarations on everything, so if you want a plain old dynamic object, you have to write
var x:Object = {...}where it used to be just
var x = {...}On the whole this is more annoying than useful. I'd rather have it do type deduction, so that
var x = {...} // same as x:Object = {...}
var s = "..." // same as s:String = "..."
Other languages (C# 3.0, C++, VB, etc.) are going this way, and it really works much better. Maybe ActionScript couldn't do this for backwards compatibility, but it would have been nice.
Ok, so this wasn't insightful. At least I got another post up.