Introduction
The hard series covers advanced TypeScript type system concepts including contravariant inference, template literal recursion, and union manipulation.

programming, life, and everything
The hard series covers advanced TypeScript type system concepts including contravariant inference, template literal recursion, and union manipulation.
The easy series covers fundamental TypeScript type system concepts. Each challenge builds intuition for mapped types, conditional types, and type inference.
Due to the large number of medium series questions, in order to facilitate everyone to check, I provide a navigation here for everyone to check.
April has been one of those months where I couldn't stop building things. Six projects in about two weeks, all in Python, all scratching a different itch — but when I look back at them together, there's a clear theme: making the invisible visible. Whether it's the state of your environment, the data flowing through a pipe, or a secret message hiding in plain sight inside your source code, every one of these tools is about surfacing information that was always there but hard to see.
Consider two commit messages for the same change — a fix for a race condition in a test suite:
Fixed wait condition in test worker kill process
Diffusion models generate stunning images, but they're slow. A single image requires dozens of sequential neural network evaluations — each one a full forward pass through a U-Net. DPM-Solver++ brought that down to 10-20 steps with reasonable quality, and it's the current state of the art. But what if we could do better by borrowing techniques that the scientific computing community has used for decades?
I spent the last few months reading ten systems papers that, taken together, map the entire design space for serverless sandboxing. This post is not a paper-by-paper summary. It is an attempt to identify the fault lines -- the tensions, convergence points, and trade-offs that define where the field is heading. I am writing this as someone actively building a serverless sandbox (Shimmy), so the lens is practical: what would you actually build today?
Reviewing your own code a few weeks after writing it is a particular kind of experience. The decisions that felt obvious at the time now look questionable. The "temporary" shortcuts are still there. And some things you were sure were correct turn out to have bugs that you can trace directly to an assumption you made at 2am.
Date: 2026-03-29
Generated by running tsc --noEmit --strict on each solution's first code block combined with the official type-challenges test cases.
| Category | Count |
|---|---|
| ✅ Passed | 84 |
| ❌ Failed | 36 |
| ⏭ Skipped (no solution / no question dir) | 2 |
| Total checked | 120 |
This project is still under development!
Type Challenges is a project that aims to provide a collection of type challenges with the goal of helping people learn TypeScript.