Hi!
If you're writing it from Typescript, then you could (and should) skip the extension in your TS file, to get something either:
import {Gauge, Donut, BaseDonut, TextRenderer} from './gauge'; import * as gauge from './gauge'; (in which case you then later need to use the exports from this module: gauge.Gauge, gauge.Donut, gauge.BaseDonut, gauge.TextRendererAbout the question, «why are the { } required», in fact the only case you don't need it is when your module has only one default export declaration.
To really get how it works, I would really recommend you to take 10-15 minutes and read the modules chapter of Typescript's Handbook, it would be really worth it! And if you're short in time, read the import part, and make sure to read the very short but so usefull 'red flags' part at the very end!