Juan Pablo Romero

It’s silly to assume too much about what others do or don’t know.

Instead of telling somebody they don’t know what they’re talking about, tell them something they don’t know:

  1. It’s more effective (you’ve just shown them proof!)
  2. It reflects a lot better on your character
  3. Ad-hominem attacks demonstrate weakness in your own position — rather than rely on the strength of your argument, you’re forced to try to attack the credibility of the other party

I agree with the rest of your TL;DR:

  • Yes, writing correct programs is hard
  • Yes, Tests and Types are both good tools at programmers disposal
  • Yes, “Tests vs Types” is a false dichotomy. You can and should use both when good implementations of both are available.

That said, JavaScript does not have a fully coexpressive type system. (And that’s OK!)

TypeScript doesn’t solve that problem because TypeScript has serious weaknesses with regard to higher-order functions. It can’t easily express common JavaScript idioms. Haskell solves this problem with higher-kinded types.

The post you’re responding to is acknowledging all these facts and saying:

Don’t worry — standard JavaScript can do most of the stuff you want from static types (the cool developer tooling sorcery), and TDD + Code Review does a much better job than static types at protecting you from bugs, so you’ll be safe from bugs, even if you’re not strictly type safe.

Show your support

Clapping shows how much you appreciated Eric Elliott’s story.