Type checking is done at compile time, and attempting to access a nonexistent field will cause a compiler error. This gives programmers much of the convenience of a dynamic language, with the type safety of a statically typed language.
Type verification is carried out during compilation, and trying to access an undefined field will produce a compiler mistake. This offers developers a lot of the ease of use of a dynamically-typed system, along with the security of a statically-typed one.