Today’s entry is so named because, 1. there’s a movie with that name, but also 2. when it comes to things like Typescript, people get dogmatic and start pointless debates.
What should matter is: what’s the right tool for the job? In this case, Typescript is the right tool – read on to find out why.
Game development involves a lot of data. These data structures have complex relationships, for example, a story can have many quests, a quest can have many parts, and so on.
Moreover, the data shape can determine different requirements. For example, if a story doesn’t have any quests, I should specially mark it as incomplete on the dashboard.
Let’s back up. To quote Talking Heads: “You may ask yourself: well, how did I get here?”
It started when I began to define the types of data that would be coming through the system. For example, stories have a name, and can have a series of quests. Those quests have a name, and “components” (more on those later), as well as internal state for each instance.
Then I stopped and thought: you know, I’m doing all this work defining a type hierarchy, so why don’t I reap the benefits of Typescript?
After all, with a little TLC, you can get Typescript to tell you about errors before your code runs. That’s like magic.
Plus, it’ll tell you just what exactly your parameter types are! I don’t know how many times I’ve received an object in a function and had to verify where it came from and what exactly was in it.
The tooling is mature, the language is well-developed and well-supported, and you even get
DefinitelyTyped modules, better known as the
@types/foo modules on NPM, which tells you about the types returned by your libraries!
Not to mention: all of this is opt-in by default. You do a 15-minute setup process and boom, you’re strongly typed. Set warnings as you wish, set the strictness level to whatever you like, but by default: you don’t have to type anything you don’t want to. Take full advantage of all Typescript has to offer, or let it sit in your pipeline unused – as Black Sheep said, the choice is yours!
Anyway, I think it’s about time I got back to my codebase for
make-a-quest (it’s open source now!). Time for a little TLC.