Presenter: Josh Goldberg @JoshuaKGoldberg

TypeScript's type system is an ""Upside Down"" style reflection of the runtime types described by your static source code. It figures out the general structure of how your code can run and validates the expected runtime against that structure. This talk dives into rudimentary logical operations in that created structure, then continuously complicates them until we have a fully fledged Tic Tac Toe simulation running in it.

Along the way, we explore a bunch of useful TypeScript type constructs: conditional types, keyof types, tuple types, mapped types, inferred types, and even string template literal types. These type system features are more than just fun ways to describe game boards, victory checking, and move placements: they're legitimate strategies for properly describing your runtime code with the type system.