And most importantly: who came up with weak typing?
For starters, get familiar with the classic fallacy, and not to be confused with weak typing and dynamic typing. Now from your question, you might think that this is one and the same.
Dynamic typing was invented in order to make it easier to write generic algorithms and meta-algorithms, in Dean. language to compile the code does not need types of tricks of the generics (TypeScript, C# and much more) or templates/macros (C++). In OO languages are often available and other amenities, for example changing the interface of an object depending on its state (because the decision on the method call/property, the object can make itself).
Weak typing was invented to make people suffer (Yes, I don't know who wants that at all).
As you write code in JS?
We do not write code in JS, we write code in TypeScript. Yes, these are strange times, when the language is statically typed compileda in a dynamic language, because to execute on the client (in the browser) nothing more yet.
He's not supposed to be stuffed with parseInt() and !== undefined.
Don't have to. If you write on bare JS, you can a) use JSDoc annotations on the types
and work types on the level of documentation and agreements; b) to write algorithms in the most generic manner, and claim not to specific data types, and values over which the valid desired operation; C) to cover code with tests, that will save in dynamic languages.
The larger the project, the more important static typing, this is normal. JS is a language which is popular for technical reasons and by coincidence, not because he deserves it (IMHO). Very intelligent uncle and aunt would not have to spend years of your time and a lot of money to develop TypeScript and Flow, if it was unnecessary.