I agree, and I've found that WebStorm (and other JetBrains software with JavaScript support) does a great job at it, although I do find TypeScript improves the experience.
How could this be done for JavaScript without any mechanism for signifying the type of object that is expected?
JS files can use JSDoc, which typescript handles (when you edit a JS file in VS Code, you're already secretly using typescript).
If you're using a third party dependency that has type definitions tsserver / VSCode will pick it up regardless of whether you're writing js or ts.
I don't believe many understand how much tsserver is doing behind the scenes in Vscode for JS code bases.. Of course any IDE can do that, because they can use tsserver via the language server protocol haha.
Yeah I use it with CoC in nvim and find it works as well as VSCode.