A
type
is a behaviour
specification
that may be used to generate instances having the behaviour.
...
A language is
strongly typed
if type compatibility of
all expressions representing values can be determined from the
static program representation at compile time.
-- Wegner. Dimensions of
object-based language design. OOPSLA 1987