TypeScript: The Complete Developer's Guide
Master TypeScript and take your career to the next level by building your own real-world complex apps and learning to use popular design patterns. Bonus: TypeScript with React and Express.
What you'll learn
- ✓Master design patterns for building large applications
- ✓Understand Composition vs Inheritance and when to use each
- ✓Create reusable boilerplate components for your own TypeScript projects
- ✓Integrate TypeScript into React/Redux or Express projects
- ✓Write reusable code powered by classes and interfaces
- ✓Understand why each feature of TypeScript exists and exactly when, where and how to use them
- ✓Build a custom front-end framework from scratch that you can use in place of React or Angular for your own personal projects
- ✓Become a top 10% TypeScript Developer
Meet your instructor

Hi! I'm Stephen.
Software Engineer & Instructor
Stephen Grider has been building complex Javascript front ends for companies in Silicon Valley.
Throughout his years of mentoring engineers as they started their careers in software development, Stephen developed a special ability to simplify complex topics.
Stephen turned this skill into a passion for teaching others, sharing the knowledge he has gained by creating some of the highest rated programming courses online. Over the past five years, more than 700,000 students from around the world have taken at least one of his courses.
Why Zero To Mastery is right for you
With so many online resources available, it can be paralyzing not only figuring out where to start but more importantly which courses will actually teach you the skills you need to get hired.
That’s why the Zero To Mastery Academy exists, to provide industry-leading courses and content to teach you the relevant skills you need to advance your career and get you hired at some of the top companies in the world.
Join now to get complete access to this course and all others for only $23/month.
Course Curriculum
We want you to make sure this course is a good fit for you. So start learning for free right now by clicking the PREVIEW links below.
Example Curriculum
- App Overview (2:44)
- Bundling with Parcel (4:54)
- Project Structure (3:19)
- Generating Random Data (5:29)
- Type Definition Files (5:17)
- Using Type Definition Files (6:20)
- Export Statements in Typescript (5:05)
- Defining a Company (4:42)
- Note on Generating an API Key
- Adding Google Maps Support (7:38)
- Google Maps Integration (4:05)
- Exploring Type Definition Files (12:46)
- Hiding Functionality (6:28)
- Why Use Private Modifiers? Here's Why (8:25)
- Adding Markers (9:18)
- Duplicate Code (2:44)
- One Possible Solution (6:37)
- Restricting Access with Interfaces (5:35)
- Implicit Type Checks (3:26)
- Showing Popup Windows (6:47)
- Updating Interface Definitions (7:11)
- Optional Implements Clauses (6:06)
- App Wrapup (8:07)
- App Overview (1:34)
- Configuring the TS Compiler (7:40)
- Concurrent Compilation and Execution (5:05)
- A Simple Sorting Algorithm (4:46)
- Sorter Scaffolding (3:10)
- Sorting Implementation (5:16)
- Two Huge Issues (7:37)
- Typescript Is Really Smart (9:34)
- Type Guards (9:13)
- Why is This Bad? (2:22)
- Extracting Key Logic (7:29)
- Separating Swapping and Comparison (13:57)
- The Big Reveal (4:37)
- Interface Definition (4:48)
- Sorting Arbitrary Collections (11:08)
- Linked List Implementation (24:15)
- Completed Linked List Code
- Just...One...More...Fix... (4:02)
- Integrating the Sort Method (2:44)
- Issues with Inheritance (6:54)
- Abstract Classes (6:25)
- Why Use Abstract Classes? (4:29)
- Solving All Issues with Abstract Classes (3:59)
- Interfaces vs Abstract Classes (3:22)
- Project Overview (1:45)
- Project Setup (5:57)
- CSV Data
- Type Definition Files - Again! (6:44)
- Reading CSV Files (5:04)
- Running an Analysis (4:21)
- Losing Dataset Context (5:11)
- Using Enums (6:18)
- When to Use Enums (7:03)
- Extracting CSV Reading (8:49)
- Data Types (2:33)
- Converting Date Strings to Dates (5:01)
- Converting Row Values (3:36)
- Type Assertions (3:56)
- Describing a Row with a Tuple (7:27)
- Not Done with FileReader Yet! (3:14)
- Understanding Refactor #1 (4:34)
- Creating Abstract Classes (4:21)
- Variable Types with Generics (11:27)
- Applying a Type to a Generic Class (4:10)
- Alternate Refactor (4:19)
- Interface-Based Approach (2:03)
- Extracting Match References - Again! (2:32)
- Transforming Data (2:35)
- Updating Reader References (3:38)
- Inheritance vs Composition (3:19)
- More on Inheritance vs Composition (7:22)
- A Huge Misconception Around Composition (14:56)
- Goal Moving Forward (5:15)
- A Composition-Based Approach (6:25)
- Implementing an Analyzer Class (7:24)
- Building the Reporter (5:26)
- Putting It All Together (3:35)
- Generating HTML Reports (5:08)
- One Last Thing! (5:34)
- Oops, My Bad! (3:14)
- App Wrapup (3:33)
- App Overview (2:45)
- Parcel Setup (2:42)
- Framework Structure (8:05)
- Designing the User (2:48)
- Retrieving User Properties (5:58)
- Optional Interface Properties (6:36)
- An Eventing System (2:44)
- Listener Support (4:23)
- Storing Event Listeners (5:24)
- Dynamic Array Creation (5:26)
- Triggering Event Callbacks (3:56)
- Adding JSON Server (7:14)
- Understanding REST Conventions (8:51)
- Adding Fetch Functionality (5:12)
- Successfully Fetching Model Data (4:50)
- Saving User Data (8:56)
- Refactoring with Composition (3:48)
- Re-Integrating Eventing (12:49)
- Composition with Nested Objects (2:44)
- A More Complicated Extraction (2:48)
- Options for Adapting Sync (9:31)
- Refactoring Sync (10:40)
- Generic Constraints Around Sync (3:30)
- Connecting Sync Back to User (4:30)
- Optional Properties (7:00)
- Extracting an Attributes Class (3:12)
- The Get Method's Shortcoming (6:18)
- Two Important Rules (7:06)
- An Advanced Generic Constraint (9:36)
- Re-Integrating Attributes (3:17)
- Composition is Delegation (4:39)
- Reminder on Accessors (5:07)
- Passthrough Methods (6:55)
- A Context Issue (8:37)
- Setting Data While Triggering (3:22)
- Fetching User Data (6:26)
- Saving Data (5:38)
- Composition vs Inheritance...Again! (9:02)
- Extracting a Model Class (7:29)
- Extending the User (5:24)
- Final User Refactor (3:48)
- Model Wrapup (3:38)
- Shortened Passthrough Methods (5:38)
- Users Collection (3:25)
- Implementing a Users Collection (3:01)
- Parsing User JSON (7:12)
- Generic User Collection (6:22)
- A Class Method for Collections (2:14)
- View Classes (4:03)
- Building the UserForm (4:45)
- The UserForm's Render Method (3:03)
- Rendering HTML (2:06)
- Defining an Events Map (6:13)
- Binding Event Handlers (7:06)
- Adding Model Properties (4:15)
- Binding Events on Class Name (5:07)
- Adding Methods to the User (4:30)
- Re-Rendering on Model Change (4:56)
- Reading Input Text (4:39)
- Strict Null Checks (6:11)
- Reusable View Logic (12:25)
- Extracting a View Class (4:10)
- Extending with Generic Constraints (12:14)
- Saving Data From a View (3:57)
- UserEdit and UserShow (6:12)
- Nesting with Regions (4:48)
- Mapping Regions (5:40)
- Testing Region Mapping (4:01)
- View Nesting (6:53)
- Collection Views (2:20)
- CollectionView Implementation (16:52)
- App Wrapup (3:35)
- Typescript with JS Libraries (5:34)
- App Overview (3:19)
- Project Setup (3:31)
- Basic Routes with Express (6:31)
- Using an Express Router (3:45)
- Parsing Form Bodies (5:55)
- Why Doesn't Express Play Nicely with TS? (13:55)
- Issues with Type Definition Files (10:16)
- Dealing with Poor Type Defs (6:28)
- Wiring Up Sessions (8:35)
- Checking Login Status (3:19)
- Logging Out (1:09)
- Protecting Routes (4:51)
- A Closer Integration (6:33)
- The Refactoring Process (3:14)
- Prototypes Reminder (8:43)
- A Quick Disclaimer (0:58)
- Project Overview (8:17)
- Why is This Hard? (7:06)
- Solution Overview (5:51)
- Basics of Metadata (8:46)
- Practical Metadata (11:08)
- Let's Refactor! (4:51)
- The 'Get' Decorator (4:24)
- The Controller Decorator (4:20)
- Proof of Concept (5:12)
- A Few Fixups (8:09)
- Defining a RouteBinder (5:03)
- Closed Method Sets with Enums (7:38)
- Metadata Keys (3:43)
- The 'Use' Decorator (8:01)
- Testing Use (3:22)
- Body Validators (5:55)
- Automated Validation (3:25)
- Testing Automated Validation (5:36)
- Fixing Routes (6:02)
- Using Property Descriptors for Type Checking (5:17)
- App Wrapup (1:22)
- React and Redux Overview (6:04)
- App Overview (2:05)
- Generating the App (1:07)
- Simple Components (3:35)
- Interfaces with Props (3:24)
- Handling Component State (2:29)
- Confusing Component State! (10:39)
- Functional Components (3:15)
- Redux Setup (7:31)
- Action Creators with Typescript (6:44)
- Action Types Enum (4:51)
- The Generic Dispatch Function (4:48)
- A Reducer with Enums (6:45)
- Validating Store Structure (5:05)
- Connecting a Component to Redux (6:09)
- Rendering a List (4:36)
- Adding in Delete Functionality (2:53)
- Breaking Out Action Creators (3:20)
- Expressing Actions as Type Union (4:06)
- Type Guards in Reducers (2:47)
- Wiring up deleteToDo Action
- Again, Type Definition Files (3:00)
- Tracking Loading with Component State (4:05)
- App Wrapup (3:37)
Course Details
We guarantee you that this is the most comprehensive and up to date TypeScript course that you can find to learn and master TypeScript. Other online courses teach you the basic syntax and features but only this course will show you how to apply TypeScript on real-world projects, walking you through how to build your own large, successful projects.
Composition vs Inheritance? You'll understand it. Build your own web framework? You'll do it. TypeScript with React/Redux? It's here!
Graduates of Zero To Mastery are now working at Google, Tesla, Amazon, Apple, IBM, JP Morgan, Facebook, Shopify + other top tech companies. This could be you.
By enrolling today, you’ll also get to join our exclusive live online community classroom to learn alongside thousands of students, alumni, mentors, TAs and Instructors. Most importantly, you will be learning from an industry expert that has actual real-world experience working with TypeScript, building large-scale apps for large companies in Silicon Valley.
TypeScript is a 'super-set' of JavaScript. That means that if you already know JavaScript, you are ready to take this course. TypeScript adds in several important features to JavaScript, including a type system. This type system is designed to help you catch errors during development, rather than when you are running your code. That means you'll be twice as productive by catching bugs earlier in development. But besides the type system, TypeScript also provides several tools for structuring large codebases and writing truly reusable code.
Mastering TypeScript by reading the documentation alone is challenging. Although you might know what a 'typed array' or an 'interface' is, the documentation (and other courses!) don't show you where to use these features or how to use them effectively. This course will ensure you understand why each feature of TypeScript exists and exactly where to use them.
Top companies are hungry for TypeScript developers. Some of the largest web apps today are being built with TypeScript. Employers are scrambling to find engineers who are fluent with this cutting edge system. Solid knowledge of TypeScript will make you far more employable, by giving you a unique skill that few other engineers possess.
Planning on building your own apps? Using TypeScript will help you structure your project correctly from day one, ensuring that you won't be crushed under technical debt at some critical stage of your company. In this course, you'll learn how to write reusable code, with a tremendous emphasis on leveraging classes and interfaces to make swappable 'widgets'. You will be able to reconfigure your apps on the fly to build wildly different features with only a minimum amount of effort.
Learn from someone who has worked on one of the largest TypeScript projects. On professional projects of my own, I have developed plugins for an open-source, browser-based code editor called Theia. The Theia project is massive in scale, encompassing hundreds of thousands of lines of code, all written in TypeScript. This project works only thanks to the power of TypeScript.
There is just too much content in this course to summarize but here is a partial listing of the different skills you'll master:
- Understand why Composition vs Inheritance is the most mis-understood topic in the JavaScript community
- Master the fundamental features of TypeScript by working on real-world projects
- We'll build a custom front-end framework from scratch that you can use in place of React or Angular on your own personal projects
- Comprehend the complex interplay between classes and interfaces and why these two pieces of TypeScript enable you to build incredibly reusable code
- Dive deeper into TypeScript with decorators, which we'll use to build a custom integration between TypeScript and Express
- Structure your React and Redux applications more confidently by understanding how to couple them with TypeScript
- Skip the documentation for third party libraries by fluently reading type definition files
- Learn just how smart TypeScript is by experiencing how deeply it analyzes your code for errors
- and much more!
I learned TypeScript years ago by hard trial-and-error. Now you can learn at 5x the speed I did. This is the course that I wish I had when I first got started with TypeScript.
This might sound crazy but we're going to make sure you actually have FUN learning and you won't be alone. You'll be learning alongside hundreds of other students from around the world in our private online community classroom.
Click Start Learning Now to join the Academy and we'll see you inside the course!
Answers to (at least some of) your questions
Are there any prerequisites for this course?
Just basic ES2015 JavaScript knowledge. No JavaScript knowledge? No problem, start off by taking Andrei's Complete Web Developer Bootcamp as a first step.
Who is this course for?
- Anyone that's stuck in a loop of "beginner" TypeScript tutorials and are ready to go beyond the basics
- Students who want to master the fundamentals of TypeScript and gain experience by actually working on complex, real-world projects
- Developers that want to be in the top 10% of TypeScript developers
- JavaScript developers that want to understand how to structure large codebases and become a more efficient developer
- Anyone who wants to structure their React and Redux applications more confidently by understanding how to couple them with TypeScript
- Anyone who wants to add a skill that is in high-demand by top companies and will help them get hired as a developer
Do you provide a certificate of completion?
We definitely do and they are quite nice. You will also be able to add Zero To Mastery Academy to the education section of your LinkedIn profile to help you stand out.
Can I use the course project in my portfolio?
Yes, you’d be crazy not to! Many of our students tell us the projects they built while following along with our courses were what got them interviews and because they built the projects themselves, they could confidently explain and walk through their work during the interview. You know what that means? Job offer!
Can I download the videos?
Definitely. You can download any and all lessons for personal use. We do everything we can to make learning easy, fun, and accessible whether that’s on your commute, on a flight or if you just have limited access to good wifi.
How long does it usually take for me to build something and get hired?
Ultimately you’re the only can that can control that. Everyone learns at a different pace, but students who put in a couple hours each day to apply what they’ve learned should be able to confidently build their own projects and get hired within 6 months.
We don’t see just getting hired as the end goal though. Our advanced courses will also teach you the topics and skills you need to get promoted and hired as a senior developer.
Still have more questions specific to the Academy membership? No problem, scroll to the bottom of this page.
Live the life you want, starting now
Learning to code and becoming a developer provides endless opportunities to live the life you want. Whether that’s a high paying job with a world-class tech company, working remotely or building your own apps, the ZTM Academy will equip you with the skills and knowledge to achieve your dreams.
Our courses walk you through the entire journey of starting to learn to code to having a successful career as a developer. Along the way, you’ll not only be supported by Stephen, other ZTM Instructors and course TAs but also your peers in the exclusive Zero To Mastery community.
Join now to take the first step to change your life.