• Courses
  • TutorialsFree
  • Learning Paths
  • Blogs
  • Authors
  • Dometrain Pro
  • Shopping Basket

    Your basket is empty

  • Business Portal
  • Deep Dive: TypeScript

    Deep dive into advanced TypeScript features and master the language

    About This Course

    Are you comfortable with the basics of TypeScript, but it is time to expand your knowledge and learn how to use advanced features? If that's the case, you have come to the right place. In this Deep Dive into TypeScript course, legendary educator Cory House will teach you everything there is to know to take your basic TypeScript knowledge to the next level and learn how to master features such as generics, decorators, validation and much more. This course is structured with practical exercises in mind, so you will be able to practice what you learned as you go immediately.

    Course Curriculum

    7h 01m 11 sections
    Welcome
    00:30 Free preview
    What will you learn in this course?
    02:05 Free preview
    Who is the course for and prerequisites
    00:26 Free preview
    Intro to Type Narrowing
    01:14
    Narrowing via typeof Type Guard
    00:57
    Exercise: typeof
    00:40
    Answers: typeof
    00:39
    Narrowing via Truthiness
    01:49
    Exercise: Narrowing via Truthiness
    00:26
    Answers: Narrowing via Truthiness
    00:48
    Narrowing via Equality Checking
    01:10
    Exercise: Narrowing via Equality Checking
    00:10
    Answers: Narrowing via Equality Checking
    00:17
    Narrowing via the in Operator
    01:28
    Exercise: Narrowing via the in Operator
    00:24
    Answer: Narrowing via the in Operator
    00:39
    Narrowing via instanceOf
    00:38
    Exercise: Narrowing via instanceOf
    00:20
    Answers: Narrowing via instanceOf
    00:23
    Narrowing via Control Flow
    00:33
    Exercise: Narrowing via Control Flow
    00:19
    Answers: Narrowing via Control Flow
    00:24
    Narrowing via a Type Predicate
    03:12
    Exercise: Narrowing via a Type Predicate
    00:53
    Answers: Narrowing via a Type Predicate
    01:48
    Narrowing via a Discriminated Union
    01:47
    Exercise: Narrowing via a Discriminated Union
    00:32
    Answers: Narrowing via a Discriminated Union
    00:33
    Narrowing via an Assertion Function
    01:22
    Exercise: Narrowing via an Assertion Function
    00:36
    Answers: Narrowing via an Assertion Function
    00:51
    Narrowing via Exhaustiveness Checking
    02:50
    Exercise: Narrowing via Exhaustiveness Checking
    00:28
    Answers: Narrowing via Exhaustiveness Checking
    00:46
    Narrowing via satisfies
    04:30
    Exercise: Narrowing via satisfies
    00:56
    Answer: Narrowing via satisfies
    01:05
    Narrowing via a Type Assertion
    03:45
    Exercise: Narrowing via a Type Assertion
    00:47
    Answer: Narrowing via a Type Assertion
    01:39
    Narrowing via a Non-null Assertion
    02:54
    Exercise: Narrowing via a Non-null Assertion
    00:49
    Answers: Narrowing via a Non-null Assertion
    00:49
    Typing this
    06:24
    Exercise: Typing this
    00:34
    Answers: Typing this
    00:59
    Summary
    03:58
    Intro to Utility Types
    00:47
    Pick and Omit
    02:21
    Exercise: Pick and Omit
    00:31
    Answers: Pick and Omit
    00:29
    Partial
    02:31
    Exercise: Partial
    00:40
    Answers: Partial
    01:10
    Required
    00:27
    Exercise: Required
    00:08
    Answers: Required
    00:07
    Readonly and ReadonlyArray
    01:15
    Exercise: Readonly and ReadonlyArray
    00:38
    Answers: Readonly and ReadonlyArray
    01:00
    Exclude
    00:33
    Exercise: Exclude
    00:26
    Answers: Exclude
    00:28
    Extract
    01:01
    Exercise: Extract
    00:11
    Answers: Extract
    00:16
    String Manipulation Utilities
    02:03
    Exercise: String Manipulation Utilities
    00:16
    Answers: String Manipulation Utilities
    00:11
    Other Built-in Utility Types
    07:02
    Built-in Utility Types Summary
    01:25
    Third-Party Utility Types
    00:51
    Intro to Implementing Generics
    11:06
    Exercise: Implementing Generics
    00:49
    Answers: Implementing Generics
    03:01
    Generic Function Types
    02:06
    Exercise: Generic Function Types
    00:18
    Answers: Generic Function Types
    00:51
    Generic Interfaces
    04:08
    Exercise: Generic Interfaces
    00:34
    Answers: Generic Interfaces
    00:58
    Generic Classes
    01:08
    Exercise: Generic Classes
    00:22
    Answers: Generic Classes
    01:10
    Generic Constraints via Extends
    08:19
    Exercise: Generic Constraints via Extends
    01:20
    Answers: Generic Constraints via Extends
    03:37
    Const Modifier
    04:29
    Exercise: Const Modifier
    00:42
    Answers: Const Modifier
    00:59
    Default Type Arguments
    05:51
    Exercise: Default Type Arguments
    01:14
    Answers: Default Type Arguments
    02:26
    Pushing Type Params Down
    03:22
    Exercise: Pushing Type Params Down
    00:06
    Answers: Pushing Type Params Down
    00:21
    Generics Best Practices
    03:29
    Exercise: Eliminating Needless Type Arguments
    00:13
    Answers: Eliminating Needless Type Arguments
    00:10
    Intro to Mapped Types
    04:13
    Exercise: Implement a Mapped Type
    00:27
    Answers: Implement a Mapped Type
    00:10
    Template Literal Types
    05:08
    Exercise: Template Literal Types
    00:29
    Answers: Template Literal Types
    01:06
    keyof
    04:53
    Exercise: keyof
    00:43
    Answers: keyof
    00:50
    typeof
    03:19
    Exericse: typeof
    00:57
    Answers: typeof
    01:42
    Indexed Access
    09:10
    Exercise: Indexed Access
    00:56
    Answers: Indexed Access
    02:40
    Conditional Types
    07:06
    Exercise: Conditional Types
    00:55
    Answers: Conditional Types
    02:21
    infer
    10:10
    Exercise: infer
    00:47
    Answers: infer
    01:37
    Looping via the in Operator
    07:59
    Exercise: Looping via the in Operator
    00:58
    Answers: Looping via the in Operator
    01:57
    Remapping Properties via as
    06:10
    Exercise: Remapping Properties via as
    00:32
    Answers: Remapping Properties via as
    01:11
    Recursion in Mapped Types
    01:59
    Exercise: Recursion in Mapped Types
    00:43
    Answers: Recursion in Mapped Types
    01:22
    JS vs TS Syntax Comparision
    04:30
    Intro to Utility Types
    00:49
    Exercise: MyPartial
    00:29
    Answers: MyPartial
    00:30
    Exercise: MyRequired
    00:30
    Answers: MyRequired
    00:39
    Exercise: MyReadonly
    00:28
    Answers: MyReadonly
    00:42
    Exercise: MyPick
    00:51
    Answers: MyPick
    00:40
    Exercise: MyRecord
    00:23
    Answers: MyRecord
    01:31
    Exercise: MyExclude
    00:45
    Answers: MyExclude
    01:03
    Exercise: MyExtract
    00:36
    Answers: MyExtract
    00:28
    Exercise: MyOmit
    00:48
    Answers: MyOmit
    01:04
    Exercise: MyNonNullable
    00:28
    Answers: MyNonNullable
    01:34
    Exercise: RecursivePartial
    01:05
    Answers: RecursivePartial
    01:11
    Intro to Runtime Validation
    03:34
    Declaring Zod Schemas
    05:23
    Exercise: Declaring Zod Schemas
    00:31
    Answers: Declaring Zod Schemas
    00:50
    Nullable and Optional
    00:42
    Zod Utility Types
    00:58
    Implementing Custom Validation via Refine
    00:42
    Validating a File via Zod
    03:01
    Validating at Runtime in Web Apps
    06:06
    Validating URL Params via Zod
    03:40
    Validating Forms via Zod
    01:24
    Validating localStorage via Zod
    01:39
    Validating API Responses via Zod
    02:35
    Validating Environment Variables via Zod
    02:09
    Suggested Next Steps
    00:39
    Understanding Decorator Implementations
    01:40
    Intro to Decorators
    05:04
    Context Parameter
    01:58
    Typing Decorators and Invocation Order
    02:21
    Decorating Methods
    05:26
    Exercise: Decorating Methods
    00:14
    Answers: Decorating Methods
    00:43
    Decorating Getters and Setters
    04:53
    Exercise: Decorating Getters and Setters
    00:16
    Answers: Decorating Getters and Setters
    00:38
    Decorating Fields
    00:59
    Exercise: Decorating Fields
    00:27
    Answers: Decorating Fields
    01:15
    Decorating Classes
    01:38
    Exercise: Decorating Classes
    00:25
    Answers: Decorating Classes
    00:35
    Implementing Universal Decorators
    02:28
    Accepting Arguments via a Decorator
    01:48
    Exercise: Accepting Arguments via a Decorator
    00:24
    Answers: Accepting Arguments via a Decorator
    01:06
    Composing Multiple Decorators
    00:41
    Exercise: Composing Multiple Decorators
    00:41
    Answers: Composing Multiple Decorators
    01:34
    Decorator Tradeoffs
    01:32
    Intro
    00:26
    Accepting Random Strings via Loose Autocomplete
    02:02
    Exercise: Accepting Random Strings via Loose Autocomplete
    00:09
    Answer: Accepting Random Strings via Loose Autocomplete
    00:18
    Type-only Imports and Exports
    06:36
    Named Tuples
    01:29
    Exercise: Named Tuples
    00:11
    Answer: Named Tuples
    00:12
    Typing Object.keys
    01:45
    Understanding Optional Keys vs Optional Values
    01:11
    Working with Evolving anys
    02:42
    Handling Excess Properties
    02:58
    Naming Values and Types the Same
    02:44
    Working with JS Array Methods
    01:57
    Disabling TypeScript via Comments
    02:31
    Typing Symbols
    04:31
    Simulating Nominal Types via Branded Types
    11:19
    Exercise: Simulating Nominal Types via Branded Types
    00:42
    Answers: Simulating Nominal Types via Branded Types
    01:11
    Testing Types
    06:32
    Exercise: Testing Types
    00:21
    Answers: Testing Types
    00:33
    Using JSDocs to Type JS Files
    07:50
    Exercise: Using JSDocs to Type JS Files
    00:12
    Answers: Using JSDocs to Type JS Files
    01:12
    Intro to tsconfig Settings
    00:22
    Avoiding Configuring From Scratch
    01:45
    Migrating from JavaScript to TypeScript
    03:03
    Configuring TypeScript for the Strictest Settings
    10:54
    Debugging via Sourcemaps
    02:46
    Optimizing for Performance
    04:37
    Intro
    00:15
    Linting TypeScript
    01:12
    Typing Errors Effectively
    05:15
    Generating Types
    01:24
    Wrap up and Next Steps
    00:40

    Meet Your Instructor

    Cory House

    Cory House

    Cory has trained over 10,000 software developers at events and businesses worldwide. Cory is the principal consultant at reactjsconsulting.com, where he has helped dozens of companies transition to React over the last decade. He is an eleven time Microsoft MVP, and speaks regularly at conferences around the world. Cory lives in Kansas City and is active on Twitter/X as @housecor.

    View all courses by Cory House

    What's New

    What's new in C# 14
    blog

    What's new in C# 14

    This guide covers every new C# 14 feature, explains its benefits, and provides practical code examples to help you navigate how you can use them.

    Learn More
    Let's Build It: AI Chatbot with RAG in .NET Using Your Data
    course

    Let's Build It: AI Chatbot with RAG in .NET Using Your Data

    Build a Retrieval-Augmented Generation (RAG) chatbot that can answer questions using your data.

    Learn More
    Working with Large Language Models
    tutorial

    Working with Large Language Models

    Learn how to work with Large Language Models (LLMs). Understand the fundamentals of how GPT works, the transformer architecture, and master prompt engineering techniques to build AI agents.

    Learn More
    From Zero to Hero: SignalR in .NET
    course

    From Zero to Hero: SignalR in .NET

    Enable enterprise-grade real-time communication for your web apps with SignalR.

    Learn More
    Deep Dive: Solution Architecture
    course

    Deep Dive: Solution Architecture

    Master solution architecture and turn business needs into scalable, maintainable systems.

    Learn More
    Migrating: ASP.NET Web APIs to ASP.NET Core
    course

    Migrating: ASP.NET Web APIs to ASP.NET Core

    A step-by-step process to migrate ASP.NET Web APIs from .NET Framework to ASP.NET Core.

    Learn More
    Getting Started: Caching in .NET
    course

    Getting Started: Caching in .NET

    Let's make the hardest thing in programming easy for .NET software engineers.

    Learn More
    From Zero to Hero: Testing with xUnit in C#
    course

    From Zero to Hero: Testing with xUnit in C#

    Learn how to test any codebase in .NET with the latest version of xUnit, the industry-standard testing library.

    Learn More
    Create a ChatGPT Console AI Chatbot in C#
    blog

    Create a ChatGPT Console AI Chatbot in C#

    This walkthrough is your hands-on entry point to create a basic C# console application that talks to ChatGPT using the OpenAI API.

    Learn More