"What To Know Before Debating Type Systems" (http://www.pphsg.org/cdsmith/types.html) is a pretty good introduction to types.
Also, while I'm only partway through Benjamin Pierce's _Types and Programming Languages_, it's been quite good so far.
It points out in the "Static and Dynamic Types" section that what is meant by "type" in static type-systems and what is meant by "type" in dynamic type-systems are two very different concepts. From the perspective of someone interested in static "types", dynamically-typed languages don't have types at all.
So you have something in Scheme like:
(define foo 1)
(define bar "1")
And that is typed, the former being a number, the latter a string. If you try to subsequently do: (+ foo bar)
the program will error out.Contrast this with what I would consider an untyped language like Python or Perl, where the translation from string to number is done without any warnings showing up.