What Is This Course?
TypeScript: Basics to Advanced is a free course that teaches TypeScript step by step, the way companies use it.
It is made for developers who already know JavaScript. You start with your first type and finish by building a complete REST API with Node.js, Express and MongoDB.
- 33 sessions, each one a single page on GitHub
- 1 to 2 hours per session, including practice
- Completely free: no signup, no paywall, no videos to sit through
mohin-sheikh
/
typescript-basics-to-advanced
A beginner-friendly TypeScript course for JavaScript developers, from your first type to typed Node.js, Express and MongoDB APIs. 33 step-by-step sessions with tested examples, real tsc error messages, animated diagrams, exercises and interview questions. Uses TypeScript 7.
TypeScript: Basics to Advanced
A free, beginner-friendly TypeScript course for JavaScript developers. You know JavaScript. In 33 sessions you learn TypeScript the way companies use it: from your first type to generics, classes, validation, and a fully typed Node.js API. Everything runs with Node.js, and every example is tested.
Table of Contents
- What Makes This Course Different
- Who This Course Is For
- What You Need
- Quick Start
- How to Use This Course
- Course Outline
- Find a Topic Fast
- What You Will Be Able to Do
- Before and After This Course
- Repository Structure
- Feedback
What Makes This Course Different
| Built on TypeScript 7 | Most tutorials online use TypeScript 5. This course uses the newest version, 7.0, and tells you when an older tutorial shows something different. |
| Backend from day one | No web pages or browser code. You run everything with Node.js, with examples from real servers: users, orders, carts, logins and |
Is This Course for You?
This course is for you if:
- You know JavaScript and want to learn TypeScript
- Your team uses TypeScript and you want to understand it properly
- You build backends or full-stack apps with Node.js
- You are preparing for a TypeScript or Node.js interview
What you need before you start
- Basic JavaScript: variables, functions, arrays, objects, classes and promises
- Node.js 24 or newer
- A code editor, such as VS Code
You do not need any TypeScript experience. If JavaScript is also new to you, start with the free JavaScript course first.
What Is TypeScript?
TypeScript is JavaScript with types. You describe what your data should look like, and TypeScript checks your code before it runs.
Here is a small example from Session 09. An order can have only four statuses, and someone makes a typo:
type OrderStatus = "pending" | "paid" | "shipped" | "cancelled";
interface Order {
readonly id: number;
status: OrderStatus;
}
const order: Order = { id: 1001, status: "pending" };
order.status = "shiped";
TypeScript catches the mistake before the code ever runs, and even suggests the fix:
error TS2820: Type '"shiped"' is not assignable to type 'OrderStatus'. Did you mean '"shipped"'?
In plain JavaScript, the wrong status would be saved without any warning, and someone would find the bug much later. TypeScript is built to catch mistakes like this early.
What You Will Learn
The course has 7 parts. Each part builds on the one before it.
| Part | Sessions | What you learn |
|---|---|---|
| 1. Getting Started | 01 to 05 | Setting up TypeScript, basic types, and reading error messages |
| 2. Typing Your Data | 06 to 11 | Arrays, objects, interfaces, union types, and handling null safely |
| 3. Functions | 12 to 13 | Typing functions, as const and satisfies
|
| 4. Generics and Type Tools | 14 to 19 | Generics, keyof, and utility types like Partial and Pick
|
| 5. Classes | 20 to 22 | Classes, inheritance, interfaces and decorators |
| 6. Real Programs | 23 to 29 | Async code, modules, validation with Joi, tsconfig, testing with Vitest |
| 7. TypeScript with Node.js | 30 to 33 | Node.js, Express and MongoDB with TypeScript, and a final project |
See the full list of all 33 sessions
What Makes It Different
- Up to date. Most tutorials online use TypeScript 5. This course uses the newest version, TypeScript 7, and tells you whenever an older tutorial shows something different.
- Every example is tested. All the code was run. Every output and every error message in the course is real, so you can compare it with yours.
- Easy to picture. 362 animated diagrams show what happens inside your code.
- Learn from mistakes. Every session shows common beginner mistakes, with the real error and the fix.
- Backend focused. No browser code. The examples come from real servers: users, orders, carts, logins and APIs.
- One step at a time. A session only uses what earlier sessions have already taught.
What Every Session Contains
| Part of a session | What it gives you |
|---|---|
| Simple explanations | One idea at a time, in plain words |
| Tested code examples | Code to type and run, with the real output |
| Animated diagrams | A picture of what is happening |
| Mini examples | Small real programs that combine the session's topics |
| Beginner mistakes | The wrong code, the error, and the fix |
| Practice exercises | Tasks to try on your own |
| Interview questions | Short questions with clear answers |
Across the course, that adds up to 352 beginner mistakes, 261 practice exercises and 406 interview questions.
The Final Project
In the last session you build a complete Task Management API in TypeScript, using everything from the course:
- Users register and log in (JWT tokens and hashed passwords)
- Each user adds, updates and deletes their own tasks
- Tasks can be filtered by status and loaded page by page
- Admins can see all users
- 25 automated tests check that everything works
How to Start
Step 1: Check that Node.js is installed. Open a terminal and run:
node -v
You need version 24 or newer. If you don't have it, install the LTS version from nodejs.org.
Step 2: Create a practice folder. Make a folder called ts-practice and open it in VS Code (File > Open Folder).
Step 3: Open Session 01. Read it and do the "Try It Yourself" part. Session 02 then installs TypeScript with you, step by step.
Tips to get the most out of it
- Go in order. Every session builds on the ones before it.
- Type the code yourself. Don't copy and paste. Typing helps you learn.
-
Check and run. Run
npx tscto check your code andnodeto run it, then compare with the session. - Do the exercises before you move on to the next session.
At one session a day, most learners finish in 6 to 7 weeks.
A Free Learning Path
This course is one of three free courses that work together:
| Step | Course | What it teaches |
|---|---|---|
| 1 | JavaScript: Basics to Advanced | The JavaScript language (25 sessions) |
| 2 | TypeScript: Basics to Advanced | TypeScript (33 sessions, this course) |
| 3 | Node.js Learning Path | Servers, APIs and databases (30 sessions) |
All three use the same simple style and the same kind of examples, so moving from one to the next is easy.
FAQ
Is it really free?
Yes. No signup, no paywall, no email list.
Are there videos?
No. Everything is written, with animated diagrams for the hard parts, so you can learn at your own pace.
I have never used TypeScript. Can I follow it?
Yes. Session 01 starts from zero. You only need basic JavaScript.
My company uses an older version of TypeScript. Is this still useful?
Yes. The language is the same, and the course points out the places where older versions behave differently.
I found a mistake. What should I do?
Please open an issue on GitHub. Every report helps the next learner.
Thanks for Reading
If this course helps you, please give it a star on GitHub. It helps other developers find it. And if you know someone who wants to learn TypeScript, share it with them.
Are you learning TypeScript right now? Tell me in the comments what you find hardest.
Start with Session 01: Introduction to TypeScript
Author: Mohin Sheikh. Follow me on GitHub for more free courses.




Top comments (1)
The Node API endpoint gives learners a useful finish line beyond syntax drills. One lesson worth emphasizing near the API section is the boundary between compile-time types and runtime data: request bodies, environment values, and database results still need validation. Showing a type plus a runtime schema for the same payload makes TypeScript’s value in backend work much more concrete.