This course has been updated! We now recommend you take the TypeScript Fundamentals, v3 course.
Table of Contents
IntroductionMike North explains what TypeScript is, and what has changed since the last version of the course.
RationaleMike explains why TypeScript is a useful tool for developers.
Course OverviewMike gives a rough outline of what will be learned, and general philosophy regarding how the course is structured.
FlagsMike navigates into the code and demonstrates various flags that can be added to the typescript command in order to run the code in various environments.
Configuring TypeScriptMike demonstrates how to set up the configuration file in TypeScript.
VariablesMike demonstrates how variables are typed in TypeScript.
Variable DeclarationsMike introduces the separation of variable declarations and initialization, and speaks to type "any".
Arrays & TuplesMike introduces how arrays and tuples are typed in TypeScript.
Object Types & InterfacesMike shows how to make properties on objects optional, and introduces the concept of an interface.
Intersection & Union TypesMike introduces types that can be either type, or must be multiple types.
Type Systems & Object ShapesMike introduces type systems, explains what object shapes are, and goes on to put the types in a hiearchy to explain how objects can be identified as more specific or broader types.
FunctionsMike demonstrates how to create type annotations for the arguments and return values.
Function Signature OverloadingMike introduces a method to provide multiple function signatures.
Lexical ScopeMike demonstrates how lexical scope affects types in TypeScript.
Interfaces & Type Aliases
Type Aliases & extendsAfter giving an overview of what will be covered in the section, Mike explains what type aliases do for the user.
Call & Construct SignaturesMike demonstrates how to utilize an interface to describe call and construct signatures.
Dictionary Objects & Index SignaturesMike explains how dictionary objects are typed in TypeScript, and pays special attention to a common error that developers fall into.
Combining InterfacesMike explains how to combine interfaces with other types.
Type TestsMike introduces the dslint library, which allows for type test in TypeScript.
ClassesMike introduces how to create a class in TypeScript.
Access Modifiers & InitializationMike demonstrates how to use access modifier keywords to make the class initialization more succint.
Definite Assignment & Lazy InitializationMike demonstrates how to suppress errors, and how to use a getter to create a lazy initialization.
Abstract ClassesMike introduces an example of an abstract class.
Converting to TypeScript
Address Book SolutionMike live codes the solution to the exercise.
GenericsMike explains what generics are, and jumps into examples of how it allows the user to parameterize types.
Type ParametersMike discusses default types, and gives an example of how to utilize TypeScript's ability to infer what a type is.
Constraints & ScopeMike introduces constraints and scope within the context of generics.
Use CasesMike warns against using generics innapropriately, and gives an example of a bad use for generics, then answers student questions.
Dictionary ExerciseStudents are instructed to create two functions that map and reduce dictionary data using generics.
Dictionary SolutionMike live codes the solution to the exercise.
Top & Bottom Types
Top TypesMike introduces the unknown and any types.
Type GuardsMike introduces user-defined type guards.
Unknowns & Branded TypesMike introduces unknowns, then reveals branded types as the safer alternative.
Bottom TypesMike introduces bottom types by first discussing type never.
Mapped & Conditional Types, & Type QueriesMike introduces the mapped types, type queries, and conditional types.
Built-In Utility TypesMike introduces the builtin utility types partial, pick, extract, exclude, and record
Declaration MergingMike explains how Visual Studio Code's tool tips provides the user with information.