Typescript: The Ultimate Bootcamp - Helicopter View 
  Setting Up the Development Environment - Node Git and IDE 
  Why Typescript? Understand the Key Benefits of the Language 
  Quiz - Understanding the benefits of the Typescript language 
  Compiling Your First Typescript Program 
  Quiz - Understand the basics of the Typescript compiler 
  The Typescript compiler noEmitOnError flag 
  Running a Typescript Program in a Browser 
  Understanding the differences between const let and var 
  Quiz - Understand the differences between const let and var 
  Typescript primitive types - numbers strings and booleans 
  Typescript Template Strings 
  Understanding Type Inference - The most powerful feature of Typescript 
  When to use Typescript Type Annotations and Why 
  Typescript Static Type System vs Javascript Dynamic Type System 
  Typescript Primitive Types - Objects 
  Typescript Nested Object Types 
  Understanding the Differences Between Null and Undefined 
  Typescript Optional Chaining - How To Avoid Null-Related Errors 
  Understanding The Typescript Null Coalescing Operator 
  Typescript Optional Chaining - Best Practices For When To Use It Or Not 
  Typescript Primitive Types - Arrays 
  Typescript Enums - Our First Custom Type 
  Understanding The Typescript Any Type - And Why You Should Avoid It 
  Avoid Implicit Any Types With The noImplicitAny Compiler Flag 
  Understanding Typescript Union Types - Nullable Variables 
  Typescript Non Null Assertion Operator 
  Typescript Strict Null Checks and the strictNullChecks Compiler Flag 
  Understanding Typescript Literal Types - When Are They Useful? 
  Understanding Typescript Type Aliases - Our First Custom Type 
  Typescript Interfaces - Defining Custom Object Types 
  Typescript Type Aliases vs Interfaces - When to Use Which And Why? 
  Understanding Typescript Type Assertions 
  Arrow Functions vs Normal Functions - Understanding The This Context 
  Typescript Default Function Parameters 
  The Typescript Object Spread Operator 
  Typescript Object Destructuring 
  Typescript Array Spread and Destructuring Operators 
  Typescript Rest Function Arguments 
  Debugging Typescript In The Browser - Step-By-Step Tutorial 
  Debugging Typescript In Node - Step-By-Step Tutorial 
  Typescript Shorthand Object Creation Notation 
  Typescript Tuples - How To Use Them? 
  Understanding The Typescript Unknown Type 
  Understanding Typescript Type Narrowing and Type Predicates 
  Understanding Typescript Never Type 
  Typescript Intersection Types 
  Introduction to tsconfig.json - The target Property 
  Using a Custom Name for the Compiler Configuration File 
  Controlling What Files To Compile - The files tsconfig.json property 
  Controlling What Files To Compile - include and exclude 
  The tsconfig.json outdir and rootDir properties 
  The tsconfig.json module property 
  Choosing What Libraries To Include Wth tsconfig.json lib and nolib properties 
  Typescript Compiler baseUrl Option 
  Understanding typeRoots types and the skipLibCheck Compiler Options 
  Including Plain Javascript in a Typescript project - allowJs and checkJs 
  Typescript Compiler - Miscellaneous Options 
  Introduction To Typescript Classes 
  Writing Our First Typescript Class - The Constructor 
  Typescript Classes - Member Variables 
  Typescript Read-Only Class Member Variables 
  Typescript Getters and Setters 
  Does Typescript Support Multiple Constructors? 
  Understanding The This Keyword When Used In a Class 
  Understanding Typescript Static Variables 
  Understanding Typescript Static Class Methods 
  Introduction To Object Oriented Inheritance 
  The Extends Keyword - Creating a Child Class 
  Understanding the Protected Keyword 
  Typescript Abstract Classes 
  Objected-Oriented Interfaces 
  The Singleton In Typescript - An Object-Oriented Design Pattern 
  New Section - Introduction To Typescript Generics 
  Commonly Used Generic Libraries 
  The Typescript Optional Interface 
  The Typescript Read Only Interface 
  Introduction To Generic Functions 
  Generic Functions With Multiple Generic Parameters 
  Typescript Generics - Type Constraints and the extends Keyword 
  Typescript Generics - Understanding the keyof Operator 
  Typescript Generic Classes 
  Introduction To Typescript Decorators - How Do They Work? 
  Introduction To Typescript Method Decorators 
  Understanding The MethodDecorator Function Signature 
  Typescript Method Decorators - Step-By-Step Implementation 
  Applying Multiple Typescript Decorators To The Same Method 
  Typescript Class Decorators 
  Typescript Property Decorators 
  New Section - Building a Secure Node REST API From Scratch In Typescript 
  Kickstarting Our Node Project With npm init 
  Setting Up An Express Server From Scratch 
  Writing Our First Express Endpoint 
  How To Add Hot-Reload To Our Typescript Development Environment 
  Parsing Command Line Arguments in a Node Program 
  Adding Support For Multiple Environments Using dotenv 
  Making The Server Port Number Configurable 
  Setting Up The Winston Logging Library 
  Setting a Cloud SQL Database With Heroku and Postgres 
  Setting Up a Database Connection With TypeORM 
  Setting Up Our First TypeORM Model 
  Modelling a One To Many Relationship in TypeORM 
  Generating a Database Schema Using TypeORM 
  Trying Out TypeORM - Populating The Database 
  Populating a Database With TypeORM - Repositories 
  Writing a Database Cleanup Script With TypeORM 
  Implementing a Data Retrieval Express Endpoint Using TypeORM 
  Eager Fetching a One To Many Relationship Using TypeORM 
  Error Handling In Asynchronous Express Endpoints 
  Overridding the Express Default Error Handling Behavior 
  Adding CORS Capabilities To An Express Server 
  Filtering Query Results In TypeORM - Part 1 
  Filtering Query Results In TypeORM - Part 2 
  Implementing The Find Course Lessons Endpoint 
  Performing a SQL Join With TypeORM 
  Setting Up an Express JSON Body Parser 
  Implementing an Express PATCH Update Endpoint 
  Controlling The Transaction Isolation Level With TypeORM 
  Implementing a POST Create Entity Endpoint 
  Implementing an Express DELETE Endpoint 
  New Section Introduction - Securing a Node REST API With Typescript 
  Setting Up The TypeORM Users Entity 
  Populating the USERS Table With User Credentials 
  Creating Password Digests Using the Node Crypto Module 
  Hashing a Password To Store It In The Database 
  Implementation of a Create User POST Endpoint 
  Implementing a Login Endpoint - Initial Skeleton 
  Login Endpoint - Validating The User Password 
  Understanding JWTs - JSON Web Tokens 
  Setting Up The jsonwebtoken Node Library 
  Creating And Signing An Authentication JWT 
  Designing an Express Authentication Middleware 
  Step-By-Step Implementation of an Authentication Middleware 
  Role Based Authorization Using an Express Middleware