TypeScript won. What next?
I knew the TS team was fully committed to collaborating with TC39. I never saw TypeScript as a threat, but, at the time, Microsoft was seen as the root of all evil, and many distrusted the TypeScript project.
Later, we moved into the next phase of the compiler wars: static types vs. dynamic types. Developer picked their sides: flow type, Reason ML, Elm, TypeScript...
Fast forward to today. The battlefield is full of corpses, and one soldier still stands: TypeScript.
TypeScript has become the clear winner, but as adoption and project sizes grow, some teams worldwide are starting to experience one big issue: compiling times are too slow.
Compiling is divided into a few phases:
Parsing: Transform your code into an in-memory data structure called an abstract syntax tree (ATS).
Type-checking: Traverse the ATS in search of errors.
Emitting: Generate the output code.
The real issue here is the type-checking phase, but how can we make it faster? Some developers are already experimenting with languages like Rust. Writing a TypeScript type-checker in Rust should make it faster, but it will introduce the issue of having multiple TypeScript compilers: One TS compiler implemented in TypeScript, and another in Rust. It will be very hard to have both in sync all the time.
I expect the TypeScript team to try to avoid getting involved in this move. They will continue to work on their TS implementation because the TS team understands that if they follow this path, a portion of the JS community will see them as a threat. If they just wait, the community will get it done for them without taking any risks.