I get why Gnome wants to use javascript. I love the language. The thing is, I don't love Gnome's implementation.
The syntax is getting out of date, and my experience with other engines doesn't translate well to the Gjs environment. Combine this with a lack of documentation. If Gnome wants to attract javascript developers, this isn't the way to do it. Its not too bad when you are coding a one page demo widget, but try coding an ambitious desktop application. Without relevant api information, I'm coding blindfolded.
One solution would be to use Typescript. All I need to do is translate the *.gir metadata to *.d.ts format, so I've created a tool
https://www.npmjs.com/package/gir2dts
All I have to do is install with npm, and reference the contained *.d.ts files.
There are a couple of samples in the example folder at https://github.com/darkoverlordofdata/gir2dts
This tool was designed to facillitate the development of another application, so it's a great example of a Gjs/Typescript application: https://github.com/darkoverlordofdata/bosco-player