On one hand, this is definitely a gap, on the other hand, you are very unlikely to run into it in practice.
The whole "pass an array/object into some function that will mutate it for you" pattern is not very popular in JS , you are much more likely to encounter code that just gives you a new array as a return value and treats its arguments as read-only.
If you validate your data at the boundaries where it enters your system (e.g. incoming JSON from HTTP responses), TypeScript is plenty good enough for almost all practical uses.
Yes, the fact that we can mutate lists with anything is super scary: Here is a basic example.
On one hand, this is definitely a gap, on the other hand, you are very unlikely to run into it in practice.
The whole "pass an array/object into some function that will mutate it for you" pattern is not very popular in JS , you are much more likely to encounter code that just gives you a new array as a return value and treats its arguments as read-only.
If you validate your data at the boundaries where it enters your system (e.g. incoming JSON from HTTP responses), TypeScript is plenty good enough for almost all practical uses.