Chapters

  • 0. Introduction

    Free

  • 1. Types & Values

    Free

  • 2. Types are just data

    Free

  • 3. Objects & Records

    Free

  • 4. Arrays & Tuples

    Free

  • 5. Conditional Types
  • 6. Loops with Recursive Types
  • 7. Template Literal Types
  • 8. The Union Type Multiverse
  • 9. Loops with Mapped Types
  • 10. Assignability In Depth

    wip

  • 11. Debugging Types

    wip

Articles

Subscribe

About

Made with ❤️ by @GabrielVergnaud

Hi 👋

I'm Gabriel!

I build data visualizations 📈 at Datadog and I'm the author and maintainer of TS-Pattern, the most popular pattern matching library for TypeScript, which makes heavy use of type-level programming techniques.

I started TS-Pattern as an experiment to see how far the type system of TypeScript could go, and boy, I didn't expect it could go that far. I discovered a full-fledged programming language with its own concepts and logic. What felt like magic at the beginning started to make sense. I could predict how my complex types were going to behave — my mental model was getting better and better.

The thing is that not enough people understand the extent of what TypeScript can do. The type system isn't more complicated than another programming language, but we don't consider it as such and that's why no one learns it properly.

It's time for this to change! I hope Type-level TypeScript will help spread the knowledge about type-level programming in the TypeScript community!

This started as a workshop I gave at Devoxx Paris together with Florent Le Gall, who I'd like to thank for helping create and reflect on the content of this course.

Find me online!

On Twitter 👉 @GabrielVergnaud

On GitHub 👉 @gvergnaud

If you enjoy Type-level TypeScript, consider sponsoring my work on GitHub!