Sorry for turning you down twice in a row (double kill! ) but here is just recent github ticket regarding TypeScript and explanation about why we don't have it: https://github.com/playcanvas/engine/issues/899
A lot of typing errors can be cached using JSLint and warnings in IDE. Some consistent coding standards might help as well, like naming convention for private/public properties and methods.
There is nothing you cannot do with vanilla JS that you could do with WASM. But there are many-many obviously limiting and just hustle to follow rules developing with C when targeting a web. Speed of development with C will be much slower than with JS. And obviously with C application can be made as hard to maintain as in any other language. This is more down to some discipline and conventions put in place by developer.
For example, our Editor is 318 JS files (concatenated in one) and 72,500 lines of code. But the way it is structured and the concepts used around the codebase, keeps us easy to extend it and add stuff to it, without slowing down development process as we go.