Technically, all values are considered subtypes of strings, but the notion of types is quite different to those of many other languages. In particular, Tcl's types do not describe the memory storage model of their values. (They're implemented with 64-bit words and buffers and arrays and so on, but that's not what the value model describes.)
It works well as long as your goal isn't to totally eliminate boxing of values.
It works well as long as your goal isn't to totally eliminate boxing of values.