(0:00:00)TypeScript Generics Workshop Welcome
(0:01:16)Typing Functions with Generics
(0:02:01)Replace the unknown Type with a Generic
(0:03:55)Restricting Generic Argument Types
(0:04:35)Add Constraints to a Generic
(0:05:30)Typing Independent Parameters
(0:06:00)Use Multiple Generics with a Function
(0:07:20)Approaches for Typing Object Parameters
(0:07:47)Approaches for Typing Object Parameters: Solution
(0:09:38)Generic Functions in Excalidraw
(0:11:58)Generics in Classes
(0:12:44)Add Types to a Class
(0:13:54)Generic Mapper Function
(0:14:57)Add Object Property Constraints to a Generic
(0:17:12)The Importance of Generics in TypeScript
(0:18:40)Add Type Parameters to a Function
(0:19:25)Pass Type Arguments to a Function
(0:22:16)Defaults in Type Parameters
(0:22:48)Specify a Default Value
(0:23:33)Infer Types from Type Arguments
(0:24:40)Infer from the Type Arguments of a Class
(0:26:51)Strongly Type a Reduce Function
(0:28:03)Pass Type Arguments to a Reduce Function
(0:31:08)Avoid any Types with Generics
(0:31:43)Use Generics to Type a Fetch Request
(0:35:30)Passing Type Arguments in
(0:37:32)Improving Code Maintainability
(0:41:09)Generics at Different Levels
(0:42:35)Represent Generics at the Lowest Level
(0:45:39)Typed Object Keys
(0:46:25)Two Approaches for Typing Object Keys
(0:50:09)Make a Generic Wrapper for a Function
(0:52:00)Constrain a Type Argument to a Function
(0:56:48)Understand Literal Inference in Generics
(1:00:42)Understand Generic Inference When Using Objects as Arguments
(1:04:15)Inferring Literal Types from any Basic Type
(1:05:09)Accepting Multiple Literal Types
(1:06:06)Infer the Type of an Array Member
(1:07:02)Constrain to the Array Member, Not the Array
(1:09:15)Generics in a Class Names Creator
(1:10:48)Two Approaches to Working with Class Names
(1:12:31)Generics in React Query
(1:17:32)Generics with Conditional Types
(1:18:20)Ensure Runtime Level & Type Level Safety with Conditional Types
(1:21:44)Fixing Errors in Generic Functions
(1:23:06)Fixing the “Not Assignable“ Error
(1:25:36)Generic Function Currying
(1:26:44)Fix Type Inference in Curried Functions
(1:30:04)Generic Interfaces with Functions
(1:32:32)Understanding Generics at Different Levels of Functions
(1:37:04)Spotting Useless Generics
(1:38:01)Refactoring Functions with Unnecessary Type Arguments
(1:39:33)Spotting Missing Generics