TypeScript
Depth — shipping. The language I've spent the most production hours in, from Chrome extensions to Node services in a Rush monorepo.
Depth: shipping. This is my default language. If I have an idea on a Friday, it exists in TypeScript by Sunday.
Where it’s been real
At Numeo I owned features end-to-end across a freight logistics platform, all in TypeScript:
- a Chrome extension with Playwright e2e coverage, used in production,
- a React admin dashboard,
- Node/TypeScript backend services,
- Telegram Mini Apps, including a gamified onboarding flow built from Figma,
- a rich-text email template system so the ops team could edit transactional mail without a developer.
All of it inside a Rush monorepo, CI/CD on GitHub Actions, deployed to GCP — which is where I learned that the language is the easy part and the build graph is the real boss fight.
What I know cold
- Generics that stay readable: constrained type parameters,
satisfies, mapped and conditional types when they earn their complexity. - Discriminated unions for state — the pattern that removed most of my runtime
undefinedbugs. - Zod (or similar) at every boundary: HTTP, env vars,
localStorage. Types are a compile-time promise; parsing is the runtime one. - React types in practice:
ReactNodevsReactElement, generic components, typed hooks, server/client boundaries in Next.js App Router.
Still sharpening
- Type-level programming without turning the codebase into a puzzle for the next person.
- Performance of large
tscprojects: project references,isolatedDeclarations. - Writing library-grade
.d.ts— different discipline from app code.
Related: React Native, Go, shoshshi.
comments