-
Урок 1.
00:01:09
Type Transformations Workshop Welcome: Explainer
-
Урок 2.
00:00:40
Get the Return Type of a Function
-
Урок 3.
00:01:31
Use a Utility Type to Extract a Function’s Return Type
-
Урок 4.
00:02:02
Typeof Keyword, and Type Level
-
Урок 5.
00:00:25
Extract Function Parameters Into A Type
-
Урок 6.
00:00:46
Use a Utility Type to Extract Function Parameters
-
Урок 7.
00:00:38
Extract The Awaited Result of a Promise
-
Урок 8.
00:00:59
Use Utility Types To Extract a Promise's Result
-
Урок 9.
00:00:34
Create a Union Type From an Object’s Keys
-
Урок 10.
00:01:31
Create Unions from Objects Using Two Operators
-
Урок 11.
00:00:23
Understand The Terminology Around Unions
-
Урок 12.
00:01:41
Union Terminology Examples
-
Урок 13.
00:00:46
Extracting Members of a Discriminated Union
-
Урок 14.
00:01:42
Extract From A Union Using a Utility Type
-
Урок 15.
00:00:20
Excluding Parts of a Discriminated Union
-
Урок 16.
00:00:32
Use a Utility Type to Remove a Single Member of a Union
-
Урок 17.
00:02:47
The Power of Union Types in TypeScript: Explainer
-
Урок 18.
00:00:39
Extract Object Properties into Individual Types
-
Урок 19.
00:01:06
Use Indexed Access Types to Extract Object Properties
-
Урок 20.
00:00:25
Extract the Discriminator from a Discriminated Union
-
Урок 21.
00:00:56
Simple Syntax Used to Access Parts of a Discriminated Union
-
Урок 22.
00:01:02
Resolve an Object’s Values as Literal Types
-
Урок 23.
00:02:23
The Annotation Used to Infer an Object's Values as Literal Types
-
Урок 24.
00:00:53
Create a Union From an Object's Values
-
Урок 25.
00:01:12
Extract Specific Members From A Union with Indexed Access
-
Урок 26.
00:00:27
Get All of an Object’s Values
-
Урок 27.
00:00:56
Use Two Operators With Indexed Access to Get All of an Object's Values
-
Урок 28.
00:00:29
Create Unions out of Array Values
-
Урок 29.
00:01:24
Methods Used to Create Unions out of Array Values
-
Урок 30.
00:00:43
Only Allow Specified String Patterns
-
Урок 31.
00:01:09
Template Literal with Strings
-
Урок 32.
00:01:01
Extract Union Strings Matching a Pattern
-
Урок 33.
00:01:03
Extracting String Pattern Matches with Template Literals
-
Урок 34.
00:00:36
Create a Union of Strings with All Possible Permutations of Two Unions
-
Урок 35.
00:01:08
Passing Unions Into Template Literals
-
Урок 36.
00:00:45
Splitting A String into a Tuple
-
Урок 37.
00:01:01
Using S From ts-toolbelt to Split a String Into a Tuple
-
Урок 38.
00:00:35
Create an Object Whose Keys Are Derived From a Union
-
Урок 39.
00:00:58
Use a Utility Type to Create An Object From A Union
-
Урок 40.
00:00:33
Transform String Literals To Uppercase
-
Урок 41.
00:01:12
Manipulate String Literals Using Type Helpers
-
Урок 42.
00:01:55
Template Literals in Mattermost: Explainer
-
Урок 43.
00:00:42
Introducing Type Helpers
-
Урок 44.
00:02:46
Create Functions that Return Types
-
Урок 45.
00:00:23
Creating a Maybe Type Helper
-
Урок 46.
00:01:17
The Unconstrained Maybe Type Helper
-
Урок 47.
00:01:06
Ensure Type Safety in a Type Helper
-
Урок 48.
00:03:01
Use Constraints to Limit Type Parameters
-
Урок 49.
00:00:27
Create a Reusable Type Helper
-
Урок 50.
00:00:36
Add Support for Multiple Types in a Type Helper
-
Урок 51.
00:00:43
Optional Type Parameters in Type Helpers
-
Урок 52.
00:01:53
Set a Default Type Value in a Type Helper
-
Урок 53.
00:00:59
Functions as Constraints for Type Helpers
-
Урок 54.
00:02:42
Support Function Type Constraints with Variable Arguments
-
Урок 55.
00:00:43
Constraining Types for Anything but null or undefined
-
Урок 56.
00:03:35
Exclude null and undefined from the Maybe Type
-
Урок 57.
00:00:33
Constraining Type Helpers to Non-Empty Arrays
-
Урок 58.
00:01:58
Enforce a Minimum Array Length in a Type Helper
-
Урок 59.
00:04:59
Explainer: Type Helpers in Redux
-
Урок 60.
00:00:39
Add Conditional Logic to a Type Helper
-
Урок 61.
00:02:27
Compare and Return Values with Extends and the Ternary Operator
-
Урок 62.
00:01:00
Refine Conditional Logic in a Type Helper
-
Урок 63.
00:02:22
Prevent Unwanted Type Scenarios from Happening
-
Урок 64.
00:01:45
How TypeScript Added Conditional Types: Explainer
-
Урок 65.
00:01:09
Introducing infer for Conditional Logic
-
Урок 66.
00:02:43
Infer Elements Inside a Conditional with Infer
-
Урок 67.
00:01:00
Extract Type Arguments to Another Type Helper
-
Урок 68.
00:02:36
Use infer with Generics to Extract Types from Arguments
-
Урок 69.
00:00:31
Extract Parts of a String with a Template Literal
-
Урок 70.
00:01:27
Pattern Matching on Template Literals with Infer
-
Урок 71.
00:02:51
Template Literal Types Were Nearly Regexes: Explainer
-
Урок 72.
00:00:52
Extract the Result of an Async Function
-
Урок 73.
00:01:23
Optionally Infer the Return Type of a Function
-
Урок 74.
00:00:52
Extract the Result From Several Possible Function Shapes
-
Урок 75.
00:01:17
Two Methods for Extracting the Result of Multiple Possible Functions
-
Урок 76.
00:00:56
Distributivity in Conditional Types
-
Урок 77.
00:03:03
Using Generic Context to Avoid Distributive Conditional Types
-
Урок 78.
00:00:40
Map Over a Union to Create an Object
-
Урок 79.
00:02:03
Use Mapped Types to Create an Object from a Union
-
Урок 80.
00:00:36
Mapped Types with Objects
-
Урок 81.
00:02:26
Map Over the Keys of an Object
-
Урок 82.
00:00:54
Transforming Object Keys in Mapped Types
-
Урок 83.
00:02:10
Remapping Object Keys in a Mapped Type
-
Урок 84.
00:01:45
How Excalidraw uses Mapped Types to Save Lines of Code: Explainer
-
Урок 85.
00:00:53
Conditionally Extract Properties from Object
-
Урок 86.
00:03:15
Selective Remapping with Conditional Types and Template Literals
-
Урок 87.
00:00:49
Map a Discriminated Union to an Object
-
Урок 88.
00:03:30
Two Techniques for Mapping a Discriminated Union to an Object
-
Урок 89.
00:00:52
Map an Object to a Union of Tuples
-
Урок 90.
00:02:05
Create a Union of Tuples by Reindexing a Mapped Type
-
Урок 91.
00:00:27
Transform an Object into a Union of Template Literals
-
Урок 92.
00:01:57
Map an Object to a Union of Template Literals
-
Урок 93.
00:00:33
Transform a Discriminated Union into a Union
-
Урок 94.
00:02:16
Iteratively Map and Remap to Transform Types
-
Урок 95.
00:01:01
Transform Path Parameters from Strings to Objects
-
Урок 96.
00:03:32
Extract from String with Mapped Types, Template Literals, and infer.
-
Урок 97.
00:00:36
Transform an Object into a Discriminated Union
-
Урок 98.
00:02:40
Create a Discriminated Union through Intermediary Transformations
-
Урок 99.
00:01:06
Transform a Discriminated Union with Unique Values to an Object
-
Урок 100.
00:02:14
Create an Object using Mapped Types, Conditional Types, and TypeScript Keywords
-
Урок 101.
00:01:02
Construct a Deep Partial of an Object
-
Урок 102.
00:05:17
Use Recursion and Mapped Types to Create a Type Helper
-
Урок 103.
00:01:17
TypeScript Generics Workshop Welcome
-
Урок 104.
00:00:46
Typing Functions with Generics
-
Урок 105.
00:01:54
Replace the unknown Type with a Generic
-
Урок 106.
00:00:40
Restricting Generic Argument Types
-
Урок 107.
00:00:56
Add Constraints to a Generic
-
Урок 108.
00:00:31
Typing Independent Parameters
-
Урок 109.
00:01:21
Use Multiple Generics with a Function
-
Урок 110.
00:00:28
Approaches for Typing Object Parameters
-
Урок 111.
00:01:51
Approaches for Typing Object Parameters: Solution
-
Урок 112.
00:02:20
Generic Functions in Excalidraw
-
Урок 113.
00:00:47
Generics in Classes
-
Урок 114.
00:01:11
Add Types to a Class
-
Урок 115.
00:01:04
Generic Mapper Function
-
Урок 116.
00:02:16
Add Object Property Constraints to a Generic
-
Урок 117.
00:01:29
The Importance of Generics in TypeScript
-
Урок 118.
00:00:45
Add Type Parameters to a Function
-
Урок 119.
00:02:51
Pass Type Arguments to a Function
-
Урок 120.
00:00:33
Defaults in Type Parameters
-
Урок 121.
00:00:45
Specify a Default Value
-
Урок 122.
00:01:08
Infer Types from Type Arguments
-
Урок 123.
00:02:12
Infer from the Type Arguments of a Class
-
Урок 124.
00:01:12
Strongly Type a Reduce Function
-
Урок 125.
00:03:06
Pass Type Arguments to a Reduce Function
-
Урок 126.
00:00:36
Avoid any Types with Generics
-
Урок 127.
00:03:47
Use Generics to Type a Fetch Request
-
Урок 128.
00:02:03
Passing Type Arguments in cal.com
-
Урок 129.
00:03:38
Improving Code Maintainability
-
Урок 130.
00:01:27
Generics at Different Levels
-
Урок 131.
00:03:04
Represent Generics at the Lowest Level
-
Урок 132.
00:00:47
Typed Object Keys
-
Урок 133.
00:03:45
Two Approaches for Typing Object Keys
-
Урок 134.
00:01:51
Make a Generic Wrapper for a Function
-
Урок 135.
00:04:49
Constrain a Type Argument to a Function
-
Урок 136.
00:03:54
Understand Literal Inference in Generics
-
Урок 137.
00:03:34
Understand Generic Inference When Using Objects as Arguments
-
Урок 138.
00:00:55
Inferring Literal Types from any Basic Type
-
Урок 139.
00:00:57
Accepting Multiple Literal Types
-
Урок 140.
00:00:57
Infer the Type of an Array Member
-
Урок 141.
00:02:14
Constrain to the Array Member, Not the Array
-
Урок 142.
00:01:33
Generics in a Class Names Creator
-
Урок 143.
00:01:44
Two Approaches to Working with Class Names
-
Урок 144.
00:04:50
Generics in React Query
-
Урок 145.
00:01:00
Generics with Conditional Types
-
Урок 146.
00:03:25
Ensure Runtime Level & Type Level Safety with Conditional Types
-
Урок 147.
00:01:22
Fixing Errors in Generic Functions
-
Урок 148.
00:02:30
Fixing the "Not Assignable" Error
-
Урок 149.
00:01:08
Generic Function Currying
-
Урок 150.
00:03:21
Fix Type Inference in Curried Functions
-
Урок 151.
00:02:28
Generic Interfaces with Functions
-
Урок 152.
00:04:33
Understanding Generics at Different Levels of Functions
-
Урок 153.
00:00:58
Spotting Useless Generics
-
Урок 154.
00:01:32
Refactoring Functions with Unnecessary Type Arguments
-
Урок 155.
00:01:32
Spotting Missing Generics
-
Урок 156.
00:02:53
Improving Type Inference with Additional Generics
-
Урок 157.
00:03:33
How tRPC Handles Inheritable Generics
-
Урок 158.
00:01:37
Refactoring Generics for a Cleaner API
-
Урок 159.
00:02:12
Create a Factory Function to Apply Type Arguments to All Child Functions
-
Урок 160.
00:01:53
The Partial Inference Problem
-
Урок 161.
00:03:57
A Workaround for The Lack of Partial Inference
-
Урок 162.
00:00:42
What is a Function Overload?
-
Урок 163.
00:01:08
Understanding Function Overloads
-
Урок 164.
00:00:32
Function Overloads vs. Conditional Types
-
Урок 165.
00:03:29
Match Return Types with Function Overloads
-
Урок 166.
00:01:18
Debugging Overloaded Functions
-
Урок 167.
00:03:53
Specifying Types for an Overloaded Function
-
Урок 168.
00:00:46
Function Overloads vs. Union Types
-
Урок 169.
00:02:03
When to Use Overloads and Unions
-
Урок 170.
00:00:43
Generics in Function Overloads
-
Урок 171.
00:02:50
Typing Different Function Use Cases
-
Урок 172.
00:01:00
Solving an Inference Mystery
-
Урок 173.
00:06:10
The Inference Mystery Solved
-
Урок 174.
00:01:18
Use Function Overloads to Infer Initial Data
-
Урок 175.
00:02:11
Split Functions Into Two Different Call Signatures
-
Урок 176.
00:01:48
The "Instantiated with Subtype" Error
-
Урок 177.
00:03:52
Handling Default Arguments with Function Overloads
-
Урок 178.
00:01:17
Make An Infinite Scroll Function Generic with Correct Type Inference
-
Урок 179.
00:05:03
Introduce a Type Parameter to Ensure Type Consistency
-
Урок 180.
00:01:34
Create a Function with a Dynamic Number of Arguments
-
Урок 181.
00:03:44
Use a Tuple to Represent a Dynamic Number of Arguments
-
Урок 182.
00:01:10
Create a Pick Function
-
Урок 183.
00:07:54
Extracting Object Properties with Reduce and Generics
-
Урок 184.
00:02:02
Create a Form Validation Library
-
Урок 185.
00:06:34
Add Strong Typing and Proper Error Handling to a Form Validator
-
Урок 186.
00:01:20
Improve a Fetch Function to Handle Missing Type Arguments
-
Урок 187.
00:01:56
Modify a Generic Type Default for Improved Error Messages
-
Урок 188.
00:02:22
Typing a Function Composition with Overloads and Generics
-
Урок 189.
00:05:53
Using Overloads and Generics to Type Function Composition
-
Урок 190.
00:02:32
Build an Internationalization Library
-
Урок 191.
00:07:47
Extract Types from Strings for an Internationalization Library
-
Урок 192.
00:01:14
Advanced Workshop Welcome
-
Урок 193.
00:03:23
What is a Branded Type?
-
Урок 194.
00:01:39
Form Validation with Branded Types
-
Урок 195.
00:01:38
Assigning Branded Types to Values
-
Урок 196.
00:00:43
Using Branded Types as Entity Id’s
-
Урок 197.
00:02:54
Add Branded Types to Functions and Models
-
Урок 198.
00:01:10
Creating Reusable Validity Checks with Branded Types and Type Helpers
-
Урок 199.
00:01:52
Combine Type Helpers with Branded Types
-
Урок 200.
00:01:54
Creating Validation Boundaries with Branded Types
-
Урок 201.
00:03:45
Using Branded Types to Validate Code Logic
-
Урок 202.
00:01:15
Using Index Signatures with Branded Types
-
Урок 203.
00:02:20
Indexing an Object with Branded Types
-
Урок 204.
00:01:02
TypeScript's Global Scope
-
Урок 205.
00:04:37
Add a Function to the Global Scope
-
Урок 206.
00:01:03
Add Functionality to Existing Global Interfaces
-
Урок 207.
00:04:43
Use Declaration Merging to Add Functionality to the Global Window
-
Урок 208.
00:01:03
Add Types to Properties of Global Namespaced Interfaces
-
Урок 209.
00:03:26
Typing process.env in the NodeJS Namespace
-
Урок 210.
00:02:00
Colocating Types for Global Interfaces
-
Урок 211.
00:02:56
Solving the Colocation Problem with Globals
-
Урок 212.
00:00:49
Filtering with Type Predicates
-
Урок 213.
00:02:56
Use a Type Predicate to Filter Types
-
Урок 214.
00:01:13
Checking Types with Assertion Functions
-
Урок 215.
00:02:46
Ensure Valid Types with an Assertion Function
-
Урок 216.
00:00:48
Avoiding TypeScript's Most Confusing Error
-
Урок 217.
00:00:37
Declare Assertion Functions Properly to Avoid Confusing Errors
-
Урок 218.
00:01:45
Combining Type Predicates with Generics
-
Урок 219.
00:02:35
Filtering with Type Predicates and Generics
-
Урок 220.
00:00:50
Combining Brands and Type Predicates
-
Урок 221.
00:00:44
Checking for Validity with Brands and Type Predicates
-
Урок 222.
00:00:24
Combining Brands with Assertion Functions
-
Урок 223.
00:01:05
Validate Types with Brands and Assertions
-
Урок 224.
00:01:02
Classes as Types and Values
-
Урок 225.
00:00:54
Using Classes in TypeScript
-
Урок 226.
00:02:13
Dive into Classes with Type Predicates
-
Урок 227.
00:02:41
Simplifying TypeScript with Type Predicates
-
Урок 228.
00:01:25
Assertion Functions and Classes
-
Урок 229.
00:01:28
Leverage Assertion Functions for Better Inference in Classes
-
Урок 230.
00:07:45
Class Implementation Following the Builder Pattern
-
Урок 231.
00:04:08
TRPC's Creator on the Builder Pattern
-
Урок 232.
00:01:09
Create a Type Safe Map with the Builder Pattern
-
Урок 233.
00:02:19
Getters and Setters in the Builder Pattern
-
Урок 234.
00:00:41
Debugging the Builder Pattern
-
Урок 235.
00:02:42
Default Generics in the Builder Pattern
-
Урок 236.
00:03:41
Building Chainable Middleware with the Builder Pattern
-
Урок 237.
00:06:38
The Power of Generics and the Builder Pattern
-
Урок 238.
00:03:18
Subclassing in Zod
-
Урок 239.
00:05:24
Where Do External Types Come From?
-
Урок 240.
00:00:59
Extract Types to Extend an External Library
-
Урок 241.
00:02:00
Retrieve Function Parameters from an External Library
-
Урок 242.
00:03:27
Navigating Lodash's Type Definitions
-
Урок 243.
00:01:21
Finding Proper Type Arguments and Generics with Lodash
-
Урок 244.
00:05:15
Passing Type Arguments with Lodash
-
Урок 245.
00:09:06
Navigating Express's Type Definitions
-
Урок 246.
00:01:18
Add Query Params to an Express Request
-
Урок 247.
00:03:44
Make an Express Request Function Generic
-
Урок 248.
00:02:45
Browsing Zod's Types
-
Урок 249.
00:01:39
Create a Runtime and Type Safe Function with Generics and Zod
-
Урок 250.
00:04:38
Infer Runtime Arguments from a Zod Schema
-
Урок 251.
00:01:38
Override External Library Types
-
Урок 252.
00:03:50
Create a Declarations File to Override Types
-
Урок 253.
00:01:10
Identity Functions as an Alternative to the `as const`
-
Урок 254.
00:01:22
Narrowing in an Identity Function for Better Inference
-
Урок 255.
00:00:30
Add Constraints to an Identity Function
-
Урок 256.
00:01:38
Constraining and Narrowing an Identity Function
-
Урок 257.
00:01:39
Specifying Where Inference Should Not Happen
-
Урок 258.
00:02:17
Fix Inference Issues with F.NoInfer
-
Урок 259.
00:01:10
Find the Generic Flow of an Identity Function
-
Урок 260.
00:02:39
Avoid Duplicate Code in an Identity Function with Generics
-
Урок 261.
00:01:19
Reverse Mapped Types
-
Урок 262.
00:02:18
Inference Inception in an Identity Function
-
Урок 263.
00:00:59
Merge Dynamic Objects with Global Objects
-
Урок 264.
00:02:19
Add Objects to the Global Scope Dynamically
-
Урок 265.
00:01:19
Narrowing with an Array
-
Урок 266.
00:08:31
Narrowing with Arrays and Generics
-
Урок 267.
00:01:59
Create a Type-Safe Request Handler with Zod and Express
-
Урок 268.
00:07:45
Type-Safe Request Handlers with Zod and Express
-
Урок 269.
00:03:55
Building a Dynamic Reducer
-
Урок 270.
00:11:26
Dynamic Reducer with Generic Types
-
Урок 271.
00:01:06
Custom JSX Elements
-
Урок 272.
00:04:01
Adding Custom Elements to JSX.IntrinsicElements
Комментарии