The arguments about making messy code applies to every language, and “strongly type” is not an advantage necessarily using Types or not.
JS will have types in the future, also TypeScript is useful now, but for use it in huge multi-team projects as “Unit test” rather than write JS code like one do on C# or Java.
The more important thing is to follow the main principles of Design patterns on OO programing:
- Program to an interface not to an implementation
- Favor object composition over class inheritance