The Stars Without Number: Revised sheet has, for a long time, been written in Pug/Sass. This already required a NodeJS install and a couple of global packages. Today, I decided to improve my situation. A quick `npm init` and some faff later, and I now have a package.json to manage those couple of dependencies. Bonus: it's easier to install on a new machine/for new people. Just `npm install && npm run dev` and everything is running and compiling! Tsc compiles the ts first, then Pug notices that the workers.js file changed and recompiles. Now for the title: Converting the worker to TypeScript. TS comes in a handy npm package, so everything above still applies. However, I needed some type declarations for all the global-scope functions Roll20 exposes. So I sat down and wrote some. Here they are. I used the documentation on the wiki (which, admittedly, doesn't say anything about types) and went from there. All the sheet attributes are stored as strings, so getAttrs will give you that, but setAttrs can take a variety of types that get coerced/converted to strings, so I put some other types in as well. It might not be fully exhaustive? Maybe they'll be useful to someone else. My sheet is now successfully running in TS! (and I already found a number of probably subtle bugs that I would have struggled to find otherwise). All in all it went surprisingly easily, and gave me the opportunity to clean up some seriously bad code.