Mastering TypeScript: From Fundamentals to Type-Level Programming & Functional Effect-TS
Master TypeScript from the ground up to advanced type-level metaprogramming and functional architecture powered by Effect-TS. Modeled after the world-class TotalTypeScript curriculum by Matt Pocock.
(COMING SOON) Moving from object-oriented patterns to functional programming, leveraging pure algebraic data types and the immensely powerful Effect-TS ecosystem.
An in-depth analysis of class accessors in TypeScript. Learn how get and set intercept reading and writing, computed properties, backing field naming patterns, and TypeScript 4.3+ Asymmetric Accessor Types.
Learn how TypeScript parameter properties compress field declarations, constructor parameter typing, and this assignments into one line. Understand compilation behavior, inheritance interaction with super(), and common duplicate identifier gotchas.
An in-depth analysis of class encapsulation. Understand the visibility matrix of public, private, and protected modifiers, inheritance rules in subclasses, compile-time type erasure, and how ES2022 hard private fields (#) provide true runtime isolation.
The functional programming masterclass for TypeScript developers. Bridge object-oriented patterns into pure functional architecture with Option/Either types, typed error handling without throw exceptions, pipe/flow composition, and an introduction to the Effect-TS ecosystem.
An in-depth guide to TypeScript classes. Learn how field declarations differ from standard ES6 JavaScript, how strictPropertyInitialization eliminates uninitialized field bugs, readonly class fields, and the Definite Assignment Assertion operator (!).
How do you type a pipe() function that takes an infinite number of functions, where the output of function A must perfectly match the input of function B? Welcome to the final boss of TypeScript.
Learn how to build chainable APIs that accumulate type knowledge at every step. This Generic Accumulator pattern is the secret engine powering libraries like tRPC, Zod, and Prisma, providing unparalleled autocomplete.
TypeScript doesn’t care if two types have different names; if they share the same shape, they are equivalent. Learn how to use Branding and Flavoring to force the compiler to differentiate between an OrderID string and a UserID string, powering Domain-Driven Design.
Why is it safe to return a subclass instead of a superclass, but dangerous to accept a superclass parameter instead of a subclass? Welcome to Variance: the computer science underpinning of TypeScript’s assignability engine.
An advanced masterclass in TypeScript type-level metaprogramming. Master conditional types (T extends U ? X : Y), distributive behavior, infer keyword pattern matching for unwrapping types, template literal types (${T}_${U}), and deep recursive object transformations.