Understanding TypeScript

Get started with TypeScript and take a deep dive into all its basic, advanced and important niche features. From the ground up, step by step!

Course Overview

About This Course

You can write JavaScript that works — but you’re tired of finding out about mistakes only after you run the code. Autocomplete feels unreliable, refactors feel risky, and “it should be fine” keeps turning into debugging sessions.

In this course, you’ll add TypeScript to the way you already build with JavaScript, so you can catch problems earlier and make your code easier to change. You’ll see how TypeScript works under the hood, then apply it in realistic scenarios — with exercises (and solutions) to make the ideas stick.

By the end, you’ll be able to introduce TypeScript into your own projects with confidence: set up a workflow that fits your stack, write code that’s safer to evolve, and use TypeScript effectively whether you’re working in a React app or a Node / Express codebase.

What You'll Learn

You’ll go from understanding how the TypeScript compiler thinks to using advanced type features and integrating TypeScript into React and Node / Express workflows.

  • Type-safe JavaScript code

    Use TypeScript’s type system to write code that prevents common runtime errors, including choosing the right built-in types and creating your own types for real project needs.

  • Compiler & config control

    Understand how the TypeScript compiler works and configure it to match your project goals, so you can control how code is checked and how it’s prepared for execution.

  • Modern JS with TypeScript

    Apply ES6 features like destructuring, arrow functions, and classes through TypeScript so you can use modern patterns even when the target environment doesn’t support them natively.

  • Advanced type techniques

    Use powerful features like infer, mapped types, constant types with as const, and satisfies to model complex data and APIs without losing readability or safety.

  • Architecture with TS constructs

    Build maintainable structures with classes, interfaces, namespaces, modules, generics, and derived types, choosing the right tool for reusable code and clear contracts.

  • TypeScript across stacks

    Combine TypeScript with ReactJS and with NodeJS / Express (including native Node.js TypeScript support) so you can keep strong typing from UI components to server logic.

Ready to get started?

See enrollment options

Prerequisites

  • JavaScript knowledge is required, but you don’t need to be an expert.

  • No prior TypeScript experience is required.

  • ES6 knowledge is helpful, but not required.

Who Is This Course For?

  • JavaScript developers

    You already build with vanilla JavaScript and want fewer surprises when code runs. This course is your next step to make everyday development and refactoring feel safer.

  • Angular learners

    You’re learning Angular and keep hearing “TypeScript is required,” but the language itself feels like a black box. This course helps you understand what TypeScript is doing so Angular code makes more sense.

  • Stack-flexible builders

    You switch between front end and back end and don’t want separate “typing strategies” for each. This course is for you if you want one TypeScript foundation that carries into React and Node / Express work.

Curriculum Overview

Start Now

Preview the structure and pacing of this course before you begin.

  • Getting Started10 lectures23m
    • 01Welcome to the Course1:31 min
    • 02What Is TypeScript?2:54 min
    • 03Why Would You Use TypeScript?5:32 min
    • 04Compiling TypeScript To JavaScript6:18 min
    • 05Editor & Project Setup2:11 min
    • 06Course Setup0:00 min
    • 07About The Course1:40 min
    • 08The Academind Pro Referral Program0:00 min
    • 09How To Get The Most Out Of This Course3:29 min
    • 10Join Our Learning Community0:00 min
  • TypeScript Basics & Basic Types31 lectures1h 46m
    • 01Module Introduction1:12 min
    • 02Project Setup2:56 min
    • 03Working with Types & Exploring Built-in Types4:44 min
    • 04Vanilla JavaScript Has Types, Too!2:53 min
    • 05Type Inference vs Type Assignment2:59 min
    • 06Assigning Types To Function Parameters2:45 min
    • 07The "any" Type3:02 min
    • 08Understanding Union Types2:02 min
    • 09Arrays & Types2:28 min
    • 10Advanced Array Types1:56 min
    • 11A First Glimpse At Generic Types - Alternative Array Type Declaration1:46 min
    • 12Making Sense of Tuples3:15 min
    • 13Object Types4:48 min
    • 14Tricky: The "Must Not Be Null" Type2:25 min
    • 15Flexible Objects with the Record Type4:55 min
    • 16Working with Enums6:39 min
    • 17Being Specific With Literal Types5:04 min
    • 18Type Aliases & Custom Types4:13 min
    • 19Quiz: Core Types & Concepts0:00 min
    • 20Function Return Value Types3:04 min
    • 21The "void" Type1:28 min
    • 22The "never" Type3:16 min
    • 23Functions As Types8:36 min
    • 24Quiz: Functions & Types0:00 min
    • 25null & undefined - Special Types2:40 min
    • 26Inferred null & A First Look At Type Narrowing3:29 min
    • 27Forced "Not Null" And Optional Chaining5:20 min
    • 28Type Casting4:26 min
    • 29The "unknown" Type5:22 min
    • 30Optional Values & TypeScript2:41 min
    • 31Nullish Coalescing5:36 min
  • The TypeScript Compiler (and its Configuration)10 lectures26m
    • 01Module Introduction1:26 min
    • 02TypeScript Project Setup & Creating a tsconfig.json File2:46 min
    • 03Exploring tsconfig Options: Target & Libs5:31 min
    • 04Controlling File Input & Emission5:16 min
    • 05Configuring Type Checking3:16 min
    • 06Example tsconfig.json & Deep Dive0:00 min
    • 07Configuring Code Quality Checks0:00 min
    • 08Compiling with tsconfig1:28 min
    • 09Using TypeScript's Watch Mode1:01 min
    • 10Installing Type Packages5:36 min
  • TypeScript Essentials Demo Project7 lectures31m
    • 01Module Introduction1:24 min
    • 02Getting Started & First Steps4:42 min
    • 03Creating a First Custom Type4:03 min
    • 04Defining a Function with a Union Type Return Value3:33 min
    • 05Adding Application Logic9:57 min
    • 06Connecting Functions & Passing Values3:52 min
    • 07Compilation & Execution3:33 min
  • Next-generation JavaScript & TypeScript9 lectures33m
    • 01Module Introduction3:39 min
    • 02"let" and "const"6:35 min
    • 03Arrow Functions4:50 min
    • 04Default Function Parameters2:09 min
    • 05The Spread Operator (...)4:32 min
    • 06Rest Parameters5:04 min
    • 07Array & Object Destructuring5:17 min
    • 08How Code Gets Compiled & Wrap Up1:37 min
    • 09Useful Resources & Links0:00 min
  • Classes & Interfaces21 lectures1h 2m
    • 01Module Introduction1:02 min
    • 02What are Classes?1:23 min
    • 03Creating a First Class6:04 min
    • 04A Useful TypeScript Shortcut & Compiling to JavaScript5:18 min
    • 05Making Sense of "public" and "private"5:47 min
    • 06Marking Fields as "readonly"1:53 min
    • 07Understanding Getters3:31 min
    • 08Setting Values with Setters5:06 min
    • 09Exploring Static Properties & Methods2:30 min
    • 10Understanding Inheritance3:23 min
    • 11The "protected" Modifier2:33 min
    • 12Making Sense Of Abstract Classes4:25 min
    • 13Introducing Interfaces1:38 min
    • 14Creating a First Interface3:57 min
    • 15Interfaces As Object Types1:43 min
    • 16Interfaces vs Type Aliases & Understanding Declaration Merging4:03 min
    • 17Using Interfaces To Define Function Types0:00 min
    • 18Implementing Interfaces3:10 min
    • 19Ensuring Base Types with Interfaces1:52 min
    • 20Extending Interfaces1:54 min
    • 21How Interfaces Get (Not) Compiled To JavaScript1:00 min
  • Advanced Types13 lectures45m
    • 01Module Introduction0:48 min
    • 02Introducing Intersection Types4:36 min
    • 03Revisiting Type Guards5:30 min
    • 04Exploring Discriminated Unions4:33 min
    • 05Guards with "instanceof"2:37 min
    • 06"Outsourcing" Type Guards & Working with Type Predicates3:14 min
    • 07The Case For Function Overloads4:39 min
    • 08Rest Parameters & Types0:00 min
    • 09Using Function Overloads2:31 min
    • 10Working with Index Types5:02 min
    • 11Constant Types with "as const"2:52 min
    • 12Revisiting the Record Type1:45 min
    • 13The "satisfies" Keyword7:49 min
  • Generic Types10 lectures28m
    • 01Module Introduction0:49 min
    • 02A Generic Type We Already Know1:56 min
    • 03Understanding Generic Types2:01 min
    • 04Creating & Using a Generic Type6:16 min
    • 05Generic Functions & Inference5:09 min
    • 06Working with Multiple Generic Parameters2:00 min
    • 07Generics & Constraints4:03 min
    • 08Constraints & Multiple Generic Types2:42 min
    • 09Working with Generic Classes & Interfaces2:06 min
    • 10Summary1:03 min

And 13 more sections in the full course.

Ready to Get Started?

Choose the option that works best for you.

Single Course

Understanding TypeScript

One Payment. Lifetime Access.

$89one-time

  • One-time payment
  • All future updates for this course
  • Downloadable resources & code
  • Certificate of completion
  • Hands-on exercises & projects
  • Self-paced learning
  • English captions on all videos
  • Lifetime access