Consider, for example, the interaction between generics in structs and classes, and protocols with associated types, and why you have to make stupid type-erasing wrappers like 'AnyObject' and so forth.
JS barely even has types at all, let alone generics. There's a lot less to go wrong there :-)