Scala has it too indeed, but it's not the default mode and feels awkward, also has known limitations.
The nice thing with typescript is that structural typing makes sense for 90% of the use cases, and for the remaining 10%, you can very easily simulate nominal typing by adding a field like so:
Ya, I'm not away of any other popular OO language that goes this route. The implications of structural sub-typing are huge, though I guess many programmers wouldn't be able to call it out.
> modern features like type inherence, null-safe, closure
This is one of the more annoying problems with our industry. People rediscover solutions from 60s and 70s and sell them as if they were new and revolutionary...
I don't think we're ever going to go back to that. Those UIs were pretty static, i.e. you only created the "initial state" in the UI designer, and then modified it during the application run-time (sometimes even creating new widgets in code), or attached some kind of data-binding models to it.
With the popularity of things like React, you now have a powerful way to express how the UI looks in every state, not just the initial one.
Now we just need something which would take care of the 'R'.
The time you needed to develop an app with those 90's RAD tools wouldn't even be sufficient to setup the build pipeline for those trendy JS frameworks.
I will only agree, the day someone makes a RAD based React WYSIWYG editor that can at very least compete with Microsoft Blend, Android Studio or XCode just to give a few examples.
"All these new languages with C-derived syntax and automatic memory management are pretty much the same -- so pick the one that is most supported on your target platform, get to work, and don't worry about it."
I'm kind of expecting someone to do a "Meta-Kotlin" next: a language that has the common intersection of features from Swift, Kotlin, C# and TypeScript, and offers tidy code generation for any of these.