I agree that TypeScript's type system is clunky compared to Elm, but being able to add a good amount of type safety with such a small learning curve and a large ecosystem at your disposal is a massive win. And Elm has its own problems (breaking changes, awkwardness of ports, lack of libraries).