I was surprised to learn, that Rider is able to detect some modules correctly and infer the type. But this does not work for all modules.
For "assert", rider got the type perfectly and autocompletion works like a charm. But for "ko" and "linq", it doesn't.
"assert.js" is very parser-friendly and I can see, how Rider gets the information.
"knockout.js" is much more complicated and the only way is probably to write the jsDoc manually.
But how do I have to put it into knockout.js?