TypeScript in no way prohibits you from defining a plain old untyped object. Just don't assign a type to it, and it behaves just as it would in plain JS. I wouldn't use Angular 2/4 either, because of its needless complexity and over engineering — but not because of TypeScript. If anything, TypeScript is a bonus.
> React mixes both JSX/HTML with JS code which I just don’t like since I strongly believe in separation of concerns and it looks ugly IMHO.
This is valid only if you think separation of concerns is the same as separation of technologies. I don't think so. It makes more sense to group code based on function.
In fact Vue.js allows single file components that mix HTML, CSS and JS in a way that would violate the author's definition of separation of concern. From Vue.js' documentation: "One important thing to note is that separation of concerns is not equal to separation of file types." [1]
> Coding speed was an area Vue.js won by far, not having to learn JSX was of huge help.
It should take no more than 20 minutes to learn JSX.
1. https://vuejs.org/v2/guide/single-file-components.html#What-...