We discuss the properties of strictly typed languages on the one hand and soft typing of the other and identify disadvantages of these approaches to type checking in the context of powerful type languages. To overcome the problems we develop an approach that combines ideas of strict and soft typing. This approach is based on the concept of complete typing that is guaranteed to accept every well-typed program. The main component of a complete type checker is defined.