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.
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:
interface Robot { __Robot: true }