Type checking can occur at either compile time or runtime. Statically typed languages, such as C++ and Java, do type checking at compile time. Dynamically typed languages, such as Smalltalk and Python, handle type checking at runtime. As a dynamically typed language, ActionScript 3.0 has runtime type checking, but also supports compile time type checking with a special compiler mode called strict mode. In strict mode, type checking occurs at both compile time and runtime, but in standard mode, type checking occurs only at runtime.
Dynamically typed languages offer tremendous flexibility when structuring your code, but at the cost of allowing type errors to manifest at runtime. Statically typed languages report type errors at compile time, but at the cost of requiring type information to be known at compile time.