You can’t write files without Node specific APIs.
You seem to be confused about what JS is. It's a high-level interpreted language. It's not C. Of course it can't open files. Can you imagine if any webpage could open files on your PC? This is like asking why Rust doesn't have a certain Blender shader node or Scratch block. The language fundamentally doesn't include those concepts directly. As an interpreted language, of course JS is going to access OS APIs through its host program. If the concern is that the APIs aren't standardized-- well, yeah, that's true. Although the basic stuff (file I/O) is included in runtimes directly.
You can’t even do proper bitwise operations because everything’s a float.
Is there something I'm missing here? Why would you expect to be able to do bitwise operations on floats and get a sensible value? And if you want to do integer bitwise operations... you still can? Just use integer values and the bitwise operators? If you're complaining that you can't be sure if a number is an integer, that's 1. a separate issue, bitwise operations still work fine, and 2. easily solved.
Binary serialization is a pain and proper deserialization in general is not enforced, even in TypeScript, because types are an illusion.
Have you looked at the bit arrays JS has now?
Up until recently there were no synchronization primitives, though now the idea of having them in JS seems terrifying.
Do you require multithreading for a language to be considered "good enough"? Why complain now that JS does have these abilities?
There are no other data structures than arrays and maps, which are often not enough.
This is patently false. JS has sets, maps (actual ones, not objects like you were referring to), etc. We're soon getting records and tuples. If you want to build a linked list in JS, you do it the exact same way as you would in any other language. Not that it would be very useful.