The three problems I see in type systems:
- Types use a different syntax than the rest of the language. Separateness.
- Types are less powerful than the programming language. No sequences; conditionals are only supported indirectly. You basically just have reference.
- The type system disappears at runtime.
Unexpectedly, I just realized that these are the same problems I experience with template systems. And these are the reasons I prefer to use neither types nor templates.