JavaScript is awful.

It’s got Good Parts!

Yes, but it’s also got Bad Parts. Lots of them.

We won’t use those parts.

How?

We’ll be disciplined.

Seriously, how?

We’ll be really disciplined.

Hmm. What about the pitfalls you don’t all know about?

Okay, we’ll use a linter.

That would shield you from the Worst Parts.

We’ll use ES2015.

That would shield you from the Next-to-Worst Parts.

What about the poor async support?

We’ll use Promises.

What about the broken data-modeling?

We’ll use ImmutableJS.

What about the broken data-processing?

We’ll use Underscore.

What about the broken data-flow?

We’ll use RxJS.

What about the broken data-consistency?

We’ll use TypeScript.

What about the broken rendering?

We’ll use React.

Why don’t you just start with a well-designed language?

Oh we couldn’t do that - there’d be too much to learn!