Let me add some context before I ask the questions I have.
A while back, I played around with Reason for several months and almost picked it for one of my earlier projects but for a few reasons, went ahead with TypeScript. After that, I didn’t keep up with the events in the Reason community and so was quite surprised when I read about the syntax changes and about ReScript in general. I’ve spent the past few days trying to catch up and get up to speed with the facts and changes. Thankfully, for my case, the new setup seems just as fine.
If typescript had a sound type system and pattern matching, I likely wouldn’t be here. But it doesn’t and it will likely never. Hence my continued interest in languages like F# (via fable), PureScript, Reason (and now ReScript). A few reasons for my interest are:
- domain modeling is much easier in these languages
- these languages are more expressive and less verbose (important when reading through old-ish code bases and adding new features and/or fixing bugs)
- a sound type system means one less thing for me to worry about
The reason why ReScript appeals to me over the other options is mainly because of the interop story, via GenType, with TypeScript. I could, in theory, create the core of the apps in ReScript and use TypeScript at the edges in cases where ReScript falls short (with libs like TypeORM or bindings for third party libs like blueprintjs, for example).
However, it only makes sense to go down this road if at some point in the future, I can completely replace TypeScript with ReScript. Otherwise the cost of splitting the code base into two languages (potentially three for cases where I use Go for the backend) will outweigh the benefits in my case.
With this context, here are my questions:
- Is it a core goal of the ReScript team to become a direct alternative to TypeScript in both the frontend (browser) and the backend (via node.js, not OCaml)?
- Is maintaining a good interop story with Flow/TypeScript a core goal of the ReScript team?
- If I were to start a new project today, should I start with the 8.0 syntax or the 8.2 syntax?
I’m not too concerned about the timeline as long as these things are part of the long term plan.