
Welcome to the course!
What is TypeScript and why is it awesome? In this lecture, we'll take a closer look at the advantages and new features TypeScript adds to JavaScript.
Time to get started! Learn how to install TypeScript globally on your system and how to use it in your first little demo project.
What exactly is in the course? Here's a complete outline!
Your success matters to me - here's how you get the most out of this TypeScript course!
Explore the essential TypeScript basics, including built-in types, object and array types, function types, and custom or special types. Build a solid foundation to tackle advanced topics in later sections.
Dive into TypeScript essentials by writing code in .ts files, compiling to JavaScript, and running with Node.js, focusing on core features without a UI.
Explore how TypeScript uses explicit type assignments for variables, built-in types like string, number, and boolean, and see how TypeScript features differ from JavaScript and compile to JavaScript.
Explore type inference and type annotation in TypeScript by comparing explicit type assignments with inferred types from initial values, and learn when to rely on inference or provide explicit types.
Replace the any type with union types to gain flexibility while preserving type safety, using the pipe symbol to allow string or number and prevent booleans, objects, and arrays.
Master TypeScript array types by using type inference or explicit typing, including union types like (string | number)[] to store strings or numbers, and define array contents clearly.
Explore the alternative array type declaration in TypeScript using the Array<T> generic form, contrasting with square brackets, to describe an array of strings or numbers.
Discover how the built-in TypeScript record type models flexible objects with unknown keys, using generics to define string or number keys and string or number values.
Learn to specify function return value types in TypeScript by using a return type after the parameter list, and note when inference applies.
Explore the void type in TypeScript and learn how functions that return nothing are inferred as void, with examples like a log function that simply prints to the console.
Discover the never type in TypeScript by comparing it with void, using a logAndThrow function to show how never means a function will not complete and prevents value assignment.
Explore how TypeScript infers null and undefined and narrows union types with a simple DOM example using getElementById. Learn to safely access the input's value after a check.
Demonstrates how to use type casting in TypeScript to treat a general HTML element as an HTMLInputElement, enabling access to the value property while cautioning about safety and null handling.
Explore the unknown type in TypeScript, compare it with any, and learn how to safely narrow types with runtime checks before using values from diverse data sources.
Learn how TypeScript configures imports, exports, and file emission, including rootDir and outDir, enabling TypeScript and JavaScript interop, source maps, and bundler usage for scalable projects.
Define a TypeScript function returning a union of an investment result array or an error string, using a calculation result alias to model each year's total amount, contributions, and interest.
Learn how to implement calculateInvestment in TypeScript by destructuring input data, validating inputs, and computing yearly totals like total, totalContributions, and totalInterestEarned, building an InvestmentResult array.
Understand how TypeScript defines an investment data type, compiles with tsc using tsconfig.json, and executes in node to output yearly investment results over a 10-year horizon.
Use the spread operator to pull elements from arrays and copy objects without using pointers. Discover how spreading creates new arrays and copies key value pairs in objects.
Use rest parameters and the spread operator to accept unlimited arguments as an array. Sum with reduce or a loop, and explore combining rest parameters with tuples for fixed counts.
Explore how TypeScript enhances JavaScript classes with extra features, and see how interfaces remain a TypeScript-exclusive feature that can be used with classes.
Explore creating a first class in TypeScript by defining class properties directly, using a constructor to initialize name and age, and comparing with vanilla JavaScript.
Learn the read-only keyword in TypeScript, usable with public or private, which prevents reassigning a property while still allowing mutation of the underlying array via push.
Learn how to add static properties and methods using the static keyword, access them on the class itself, and use a static greet method for utility-style functionality.
Define a first TypeScript interface using the interface keyword to describe an authenticatable object with email and password properties and login and logout methods.
Learn how to extend interfaces in TypeScript using the extends keyword to inherit properties from a base interface and add new ones like role, without altering the original interface.
Define TypeScript type guards for classes using the instanceof operator to discriminate between User and Admin objects, enabling safe calls to join or scan in a union-typed init function.
Learn function overloading in TypeScript by returning a string or a number based on input type (string or array), using type guards, union types, and template literals.
Explore how TypeScript supports function overloading with multiple signatures and a single implementation, enabling different parameter lists and return types depending on which signature is invoked.
Understand how TypeScript narrows type inference with as const, converting a string array into a readonly array of specific values like admin, guest, and editor, preventing pushes.
Explore generics and generic types in TypeScript, understand why this feature exists, and learn how to build and use generic types.
Understand generic types as combinations of multiple types used together, such as an array of strings, to create flexible, reusable type definitions and build your own generics.
Explore generics and constraints in TypeScript by building a mergeObj utility that merges two objects with a generic type T constrained to object, ensuring safe spread and meaningful results.
The module kicks off with a demo project that uses classes and generic types to build a linked list in TypeScript, preparing you for deeper exploration in the next sections.
Explore how a linked list stores values in nodes connected by next pointers in TypeScript, and compare its efficiency to arrays while practicing a practical data structure.
Add an add method to the LinkedList that stores values in a ListNode and uses a generic type, enabling numberList or nameList at instantiation.
Improve a TypeScript linked list by adding a tail pointer to enable constant-time appends, updating the tail after inserting a new node, and handling undefined initial states.
Discover how the typeof operator derives types from values in TypeScript, using it on a settings object to infer properties like difficulty, min level, did start, and players.
Explore TypeScript's keyof operator, which derives a union of object keys from a type. See how a user type with name and age demonstrates its use beyond vanilla JavaScript.
Explore mapped types in TypeScript to transform an operations type into a related results type by mapping keys with keyof and the in operator using a generic type parameter T.
Understand TypeScript conditional types to derive element types from arrays and build generic utility types. Learn how GetElementType uses a conditional type to return string or never based on input.
March 2025: BIG COURSE UPDATE
Re-recorded large parts of the course to cover missing TypeScript concepts (e.g., "satisfies"), improve explanations and add extra examples & demo projects.
Added more than 10h of new content!
---
Learn what TypeScript is, why it really is a powerful addition to JavaScript, what its features are and how to use it! Learn why TypeScript is amazing, how it improves your JavaScript code and how it helps you avoid nasty bugs and errors!
This course takes you from the very basics and its most important feature (types!) to the point where you're able to use TypeScript in any of your projects. ReactJS projects included!
As TypeScript is developed by Microsoft and strongly advertised and used by Angular 2+ (Google) and other popular libraries, it's here to stay. Indeed, TypeScript is one of the most popular web development languages you can learn these days!
Gain an edge today and be amongst the first to really understand TypeScript!
Learn how you can use TypeScript to bring modern JS features like destructuring, arrow functions or classes to any environment and codebase - even if it does not support those features yet! Understand which types you may use and how you can build your own types. Learn how to write better code with types and with the many features offered by TypeScript!
But, in this course, we'll not stop after the basics! You will also learn about more advanced features (like decorators) and also how to set up workflows with TypeScript. This includes a TypeScript-only workflow as well as a webpack workflow.
You'll also learn that you're not limited to Angular or plain JavaScript/ TypeScript projects. Instead, a complete module covers how you may use TypeScript with ReactJS and improve your React code with TypeScript as well.
Practice what you learn!
Watching videos is a great way to learn. And to a lot of students, it's the best way. If you also want to practice the things you learn, this course offers you more than that though. Because this course comes with plenty of exercises (and solutions, of course) in addition to all the high-quality learning videos.
So much Content!
I'm not a fan of these courses which teach you the basics and then leave you alone.
That's why in this course you'll get insights into:
Types and how to use them
How the TypeScript compiler works (and how you may configure it)
ES6 features with TypeScript
Advanced TypeScript Features like "infer", Mapped Types, Constant Types & Much More!
Classes in TypeScript
Namespaces and modules
Interfaces
Generics
Decorators
How to integrate Third-Party JavaScript libraries like Zod into your TypeScript projects
How to set up a TypeScript project with Webpack
Or how to set up a plain-TypeScript workflow
How to use TypeScript together with ReactJS
How to use TypeScript together with Node/ Express (incl. native Node.js TypeScript support)
Real projects and use-cases!
And so much more!