JS++® introduces the first and only type system compatible with JavaScript that is optional and "sound."
In other words, if you choose to declare the type for a variable, it is guaranteed to always be correct — during compile-time checking and runtime execution — even if you're using "untyped" JavaScript libraries.
// You're not required to declare the type for a variable and you can just
// keep writing regular JavaScript (again, NO learning curve):
var offset = 0;
// But, if you do, this next variable will always remain an 'unsigned int' - even at runtime.
// You'll never see NaN ("Not a Number") runtime errors again.
// This variable is 'unsigned' so it's also guaranteed to never be negative.
unsigned int pageHeight = $(document).height();
"TypeScript's 'type erasure' vs JS++'s 'type guarantee' would be a big reason to use JS++ over TypeScript."
Due to the low quality and low reliability of programming languages that compile to JavaScript - even from Microsoft, Google, and Facebook - programmers have begun to think these languages are "hacks." JS++ was researched and designed over multiple years with a strong scientific foundation.
You'll be surprised how JS++ works 100% of the time, even in the most obscure edge cases that professional JavaScript developers have never even heard of, from ActiveX and GC bugs to cross-browser DOM API differences and 'instanceof' across iframes. The programming experience of the JS++ team dates back to the birth of the World Wide Web.