5 Reasons:
- It is truly sound, you can’t adjust the degree of typing in your codebase. It is nice not having to dance around null all the time or bikeshed on compiler settings.
- It is simple. It’s very easy to write a switch statement in TypeScript that compiles but is wrong. It is nice to only have one way to write a switch statement in ReScript whose exhaustiveness checking can’t be circumvented deliberately or accidentally.
- It is familiar to both JS and TS devs, making it easy to learn. For people who don’t know ReScript at all, i’m confident it could be maintained without knowing ReScript at all.
- It is ready for the web with React bindings. I’ve integrated ReScript react components into TypeScript codebases, at any level.
- It has a great gradual adoption strategy. It’s presence grows in your codebase. This is a different approach than TypeScript, which is applied (to varying degrees of typing) to all your JS code. This makes the experience different for each project.
I’m convinced these qualities make it the successor of TypeScript.