A structured, hands-on path to mastering TypeScript — from fundamentals to expert-level type-level programming.
Abdur Rahman
Frontend Developer
📱 WhatsApp: 01705952160
✉️ abdurrahmansoftw@gmail.com
TypeScript is a strongly typed superset of JavaScript that compiles to plain JavaScript. It is a pure object-oriented programming language that excels in large-scale JavaScript applications by adding optional static typing, classes, interfaces, and modern language features.
- ✅ Static Type Checking — Catch errors at compile time, not runtime
- ✅ Better IDE Support — IntelliSense, autocomplete, refactoring
- ✅ Improved Readability — Types act as living documentation
- ✅ Scalability — Built for large codebases and teams
- ✅ Modern Features — Latest ECMAScript + future proposals
- ✅ Gradual Adoption — Works alongside existing JavaScript
This repository is organized into 8 progressive levels — from beginner fundamentals to expert-level type manipulation.
Goal: Understand the core type system and basic syntax.
| # | Topic | Description |
|---|---|---|
| 01 | Types and Primitives | number, string, boolean, null, undefined, void, never |
| 02 | Variables and let/const |
Variable declaration, scoping, immutability |
| 03 | Functions Basics | Parameters, return types, arrow functions |
| 04 | Arrays and Tuples | Typed arrays, fixed-length tuples |
| 05 | Objects and Types | Object literals, optional & readonly properties |
| 06 | Type Aliases | Creating reusable type names |
| 07 | Union and Intersection | Combining multiple types |
| 08 | Type Assertions | as, angle-bracket, non-null assertion |
| 09 | Control Flow | if, switch, loops, narrowing |
| 10 | Basic Error Handling | try, catch, throw, custom errors |
Folder: 01-beginner/
Goal: Write idiomatic, modular, production-ready TypeScript.
| # | Topic | Description |
|---|---|---|
| 01 | Interfaces | Contract definitions, structural typing |
| 02 | Generics Basics | Reusable, type-safe functions and classes |
| 03 | Enums | Numeric and string enums, const enum |
| 04 | Classes and OOP | Inheritance, polymorphism, access modifiers |
| 05 | Modules and Imports | export, import, default vs named |
| 06 | Namespaces | Legacy module organization |
| 07 | Type Narrowing | typeof, in, discriminant checks |
| 08 | Declaration Files | .d.ts, ambient types, @types packages |
| 09 | Async/Await | Modern asynchronous patterns |
| 10 | Promises | Chaining, Promise.all, error handling |
| 11 | Iterators and Generators | Symbol.iterator, yield, function* |
| 12 | Symbols | Unique identifiers, well-known symbols |
Folder: 02-intermediate/
Goal: Harness the full power of TypeScript's type system.
| # | Topic | Description |
|---|---|---|
| 01 | Conditional Types | T extends U ? X : Y |
| 02 | Mapped Types | Transform object types |
| 03 | Template Literal Types | String-level type manipulation |
| 04 | Utility Types | Partial, Required, Pick, Omit, Record |
| 05 | keyof and typeof |
Type operators |
| 06 | Type Guards | User-defined and built-in guards |
| 07 | Advanced Generics | Constraints, defaults, conditional inference |
| 08 | Recursive Types | Self-referencing type definitions |
| 09 | Distributive Conditional Types | Distribution over unions |
| 10 | infer Keyword |
Extracting types from other types |
| 11 | Decorators | Class, method, property decorators |
| 12 | Mixins | Composing classes from multiple sources |
| 13 | Design Patterns | Singleton, Factory, Observer, Strategy, etc. |
| 14 | satisfies Operator |
Type-safe literal preservation |
| 15 | const Type Parameter |
Immutable generic inference |
| 16 | Discriminated Unions | Tagged unions for safe state modeling |
| 17 | Branded Types | Nominal typing in a structural system |
| 18 | Overloads | Multiple function signatures |
Folder: 03-advanced/
Goal: Build enterprise-grade, type-safe architectures.
| # | Topic | Description |
|---|---|---|
| 01 | Type-Level Programming | Computation entirely in the type system |
| 02 | Builder Pattern | Type-safe fluent APIs |
| 03 | Functional Programming | ADTs, monads, immutability |
| 04 | Async Patterns (Advanced) | Streams, cancellation, backpressure |
| 05 | Error Handling Patterns | Result/Either types, error as values |
| 06 | Metaprogramming | Reflect-metadata, runtime type info |
| 07 | Compiler API | Programmatic access to the TS compiler |
| 08 | AST Manipulation | Abstract Syntax Tree transformations |
| 09 | Performance Optimization | Type instantiation depth, compile speed |
| 10 | DDD with TypeScript | Domain-driven design patterns |
| 11 | Event Sourcing | Type-safe event stores |
| 12 | CQRS Pattern | Command-Query separation |
Folder: 04-expert/
Goal: Build type-safe React applications.
| # | Topic | Description |
|---|---|---|
| 01 | Component Patterns | FC, props, children, composition |
| 02 | Hooks with Types | useState, useRef, useReducer typing |
| 03 | Context API | Typed providers and consumers |
| 04 | State Management | Redux Toolkit, Zustand, Jotai |
| 05 | Forms and Validation | React Hook Form + Zod |
| 06 | Routing | React Router typed routes |
| 07 | Data Fetching | TanStack Query, SWR |
| 08 | Generic Components | Reusable typed components |
| 09 | HOC and Render Props | Higher-order component typing |
| 10 | Testing | React Testing Library + Vitest |
Folder: 05-react-typescript/ (uses .tsx)
Goal: Build robust, type-safe backend services.
| # | Topic | Description |
|---|---|---|
| 01 | Express Setup | Typed server bootstrap |
| 02 | Middleware Patterns | Typed request/response pipelines |
| 03 | REST API Design | Endpoints, validation, DTOs |
| 04 | GraphQL | TypeGraphQL, schema-first design |
| 05 | Authentication | JWT, OAuth, session typing |
| 06 | Testing the Server | Supertest, integration tests |
| 07 | Microservices | Service boundaries, contracts |
| 08 | gRPC | Protocol buffers + TypeScript |
| 09 | WebSockets | Real-time typed channels |
Folder: 06-node-typescript/
Goal: Professional development setup.
| # | Topic | Description |
|---|---|---|
| 01 | tsconfig.json Deep Dive |
Compiler options, project references |
| 02 | ESLint & Prettier | Linting and formatting |
| 03 | Webpack / Vite / Rollup | Modern bundlers |
| 04 | Jest / Vitest | Testing frameworks |
| 05 | Build Pipelines | Type-only builds, multi-target output |
| 06 | Monorepo Setup | Turborepo, Nx, pnpm workspaces |
| 07 | CI/CD | GitHub Actions, automated checks |
Folder: 07-tooling/
Goal: Sharpen your skills with classic type puzzles.
| Difficulty | Description |
|---|---|
| 🟢 Easy | Foundational type manipulations |
| 🟡 Medium | Utility combinations, mapped types |
| 🔴 Hard | Recursive types, template literals |
| ⚫ Extreme | Full type-level programs |
Folder: 08-type-challenges/
Beginner → Intermediate → Advanced → Expert
↓
React/Node Applications (Levels 5–6)
↓
Tooling & Professional Workflow (Level 7)
↓
Type Challenges Practice (Level 8)
- Pick a level that matches your current skill.
- Read the topic — each folder represents one concept.
- Open the file (named after the folder) and start coding.
- Experiment freely — break things, fix them, learn.
- Move up a level when you feel confident.
# Install dependencies
npm install
# Compile TypeScript
npx tsc
# Watch mode
npx tsc --watch- 📖 TypeScript Official Docs
- 📖 TypeScript Handbook
- 🏋️ Type Challenges
- 🎥 TypeScript Deep Dive (basarat)
- 📘 Effective TypeScript
🔄 Actively maintained — This is a living learning repository.
"The best way to learn TypeScript is to write TypeScript." ✨