Stack · Language

TypeScript — types as design, not decoration

EcosystemTypeScript

TypeScript is the default for everything I write — apps, libraries and the scripts around them. Every library I publish ships its own types.

Why I use it

The value isn't catching typos; a test suite does that. It's that designing the types forces the modelling decision to the front, where it's cheap. A union of valid states rules out the impossible combinations that otherwise become runtime bugs six months later. Strict mode from the first commit, too — retrofitting it onto a codebase that grew up loose is a project of its own.

What I've built with it

  • Style types inferred per primitive in Inertia, so Motion.View takes ViewStyle and Motion.Text takes TextStyle — passing the wrong one fails at compile time
  • Strict types on every prop and theme token across Root Native UI's 28 components
  • Shared types between a Node API and its React client, so a response shape change breaks the build instead of the app
  • Migrating JavaScript codebases to TypeScript incrementally, module by module, rather than in one unmergeable branch

Alongside

JavaScriptReactNode.jsType safety

Rest of the stack

Got a project that needs TypeScript?

Get in touch →