1. Урок 1. 00:01:32
    Welcome to the Course
  2. Урок 2. 00:02:55
    What Is TypeScript?
  3. Урок 3. 00:05:33
    Why Would You Use TypeScript?
  4. Урок 4. 00:06:19
    Compiling TypeScript To JavaScript
  5. Урок 5. 00:02:12
    Editor & Project Setup
  6. Урок 6. 00:01:41
    About The Course
  7. Урок 7. 00:03:30
    How To Get The Most Out Of This Course
  8. Урок 8. 00:01:13
    Module Introduction
  9. Урок 9. 00:02:57
    Project Setup
  10. Урок 10. 00:04:45
    Working with Types & Exploring Built-in Types
  11. Урок 11. 00:02:54
    Vanilla JavaScript Has Types, Too!
  12. Урок 12. 00:03:00
    Type Inference vs Type Assignment
  13. Урок 13. 00:02:46
    Assigning Types To Function Parameters
  14. Урок 14. 00:03:03
    The "any" Type
  15. Урок 15. 00:02:03
    Understanding Union Types
  16. Урок 16. 00:02:29
    Arrays & Types
  17. Урок 17. 00:01:57
    Advanced Array Types
  18. Урок 18. 00:01:47
    A First Glimpse At Generic Types - Alternative Array Type Declaration
  19. Урок 19. 00:03:16
    Making Sense of Tuples
  20. Урок 20. 00:04:49
    Object Types
  21. Урок 21. 00:02:26
    Tricky: The "Must Not Be Null" Type
  22. Урок 22. 00:04:56
    Flexible Objects with the Record Type
  23. Урок 23. 00:06:40
    Working with Enums
  24. Урок 24. 00:05:05
    Being Specific With Literal Types
  25. Урок 25. 00:04:14
    Type Aliases & Custom Types
  26. Урок 26. 00:03:05
    Function Return Value Types
  27. Урок 27. 00:01:29
    The "void" Type
  28. Урок 28. 00:03:17
    The "never" Type
  29. Урок 29. 00:08:37
    Functions As Types
  30. Урок 30. 00:02:41
    null & undefined - Special Types
  31. Урок 31. 00:03:30
    Inferred null & A First Look At Type Narrowing
  32. Урок 32. 00:05:21
    Forced "Not Null" And Optional Chaining
  33. Урок 33. 00:04:27
    Type Casting
  34. Урок 34. 00:05:23
    The "unknown" Type
  35. Урок 35. 00:02:42
    Optional Values & TypeScript
  36. Урок 36. 00:05:37
    Nullish Coalescing
  37. Урок 37. 00:01:27
    Module Introduction
  38. Урок 38. 00:02:47
    TypeScript Project Setup & Creating a tsconfig.json File
  39. Урок 39. 00:05:32
    Exploring tsconfig Options: Target & Libs
  40. Урок 40. 00:05:17
    Controlling File Input & Emission
  41. Урок 41. 00:03:17
    Configuring Type Checking
  42. Урок 42. 00:01:29
    Compiling with tsconfig
  43. Урок 43. 00:01:02
    Using TypeScript's Watch Mode
  44. Урок 44. 00:05:37
    Installing Type Packages
  45. Урок 45. 00:01:25
    Module Introduction
  46. Урок 46. 00:04:43
    Getting Started & First Steps
  47. Урок 47. 00:04:04
    Creating a First Custom Type
  48. Урок 48. 00:03:34
    Defining a Function with a Union Type Return Value
  49. Урок 49. 00:09:58
    Adding Application Logic
  50. Урок 50. 00:03:53
    Connecting Functions & Passing Values
  51. Урок 51. 00:03:34
    Compilation & Execution
  52. Урок 52. 00:03:40
    Module Introduction
  53. Урок 53. 00:06:36
    "let" and "const"
  54. Урок 54. 00:04:51
    Arrow Functions
  55. Урок 55. 00:02:10
    Default Function Parameters
  56. Урок 56. 00:04:33
    The Spread Operator (...)
  57. Урок 57. 00:05:05
    Rest Parameters
  58. Урок 58. 00:05:18
    Array & Object Destructuring
  59. Урок 59. 00:01:38
    How Code Gets Compiled & Wrap Up
  60. Урок 60. 00:01:03
    Module Introduction
  61. Урок 61. 00:01:24
    What are Classes?
  62. Урок 62. 00:06:05
    Creating a First Class
  63. Урок 63. 00:05:19
    A Useful TypeScript Shortcut & Compiling to JavaScript
  64. Урок 64. 00:05:48
    Making Sense of "public" and "private"
  65. Урок 65. 00:01:54
    Marking Fields as "readonly"
  66. Урок 66. 00:03:32
    Understanding Getters
  67. Урок 67. 00:05:07
    Setting Values with Setters
  68. Урок 68. 00:02:31
    Exploring Static Properties & Methods
  69. Урок 69. 00:03:24
    Understanding Inheritance
  70. Урок 70. 00:02:34
    The "protected" Modifier
  71. Урок 71. 00:04:26
    Making Sense Of Abstract Classes
  72. Урок 72. 00:01:39
    Introducing Interfaces
  73. Урок 73. 00:03:58
    Creating a First Interface
  74. Урок 74. 00:01:44
    Interfaces As Object Types
  75. Урок 75. 00:04:04
    Interfaces vs Type Aliases & Understanding Declaration Merging
  76. Урок 76. 00:03:11
    Implementing Interfaces
  77. Урок 77. 00:01:53
    Ensuring Base Types with Interfaces
  78. Урок 78. 00:01:55
    Extending Interfaces
  79. Урок 79. 00:01:01
    How Interfaces Get (Not) Compiled To JavaScript
  80. Урок 80. 00:00:49
    Module Introduction
  81. Урок 81. 00:04:37
    Introducing Intersection Types
  82. Урок 82. 00:05:31
    Revisiting Type Guards
  83. Урок 83. 00:04:34
    Exploring Discriminated Unions
  84. Урок 84. 00:02:38
    Guards with "instanceof"
  85. Урок 85. 00:03:15
    "Outsourcing" Type Guards & Working with Type Predicates
  86. Урок 86. 00:04:40
    The Case For Function Overloads
  87. Урок 87. 00:02:32
    Using Function Overloads
  88. Урок 88. 00:05:03
    Working with Index Types
  89. Урок 89. 00:02:53
    Constant Types with "as const"
  90. Урок 90. 00:01:46
    Revisiting the Record Type
  91. Урок 91. 00:07:50
    The "satisfies" Keyword
  92. Урок 92. 00:00:50
    Module Introduction
  93. Урок 93. 00:01:57
    A Generic Type We Already Know
  94. Урок 94. 00:02:02
    Understanding Generic Types
  95. Урок 95. 00:06:17
    Creating & Using a Generic Type
  96. Урок 96. 00:05:10
    Generic Functions & Inference
  97. Урок 97. 00:02:01
    Working with Multiple Generic Parameters
  98. Урок 98. 00:04:04
    Generics & Constraints
  99. Урок 99. 00:02:43
    Constraints & Multiple Generic Types
  100. Урок 100. 00:02:07
    Working with Generic Classes & Interfaces
  101. Урок 101. 00:01:04
    Summary
  102. Урок 102. 00:00:50
    Module Introduction
  103. Урок 103. 00:01:36
    What Is A Linked List?
  104. Урок 104. 00:04:50
    Creating List & Node Classes
  105. Урок 105. 00:03:12
    Making the Class Generic
  106. Урок 106. 00:06:46
    Adding an "add" Method
  107. Урок 107. 00:03:08
    Adding Items More Efficiently
  108. Урок 108. 00:04:00
    Accessing the Data & Compiling + Running the Code
  109. Урок 109. 00:01:55
    Finishing the Linked List
  110. Урок 110. 00:00:49
    Module Introduction
  111. Урок 111. 00:04:48
    Using "typeof"
  112. Урок 112. 00:04:07
    "typeof" & A More Useful Example
  113. Урок 113. 00:02:23
    Extracting Keys with "keyof"
  114. Урок 114. 00:06:27
    "keyof" & A More Useful Example
  115. Урок 115. 00:04:36
    Understanding Indexed Access Types
  116. Урок 116. 00:03:55
    Accessing Array Elements with Indexed Access Types
  117. Урок 117. 00:07:53
    Introducing Mapped Types
  118. Урок 118. 00:07:23
    Readonly Types & Optional Mapping
  119. Урок 119. 00:10:14
    Exploring Template Literal Types
  120. Урок 120. 00:09:27
    Introducing Conditional Types
  121. Урок 121. 00:06:05
    Conditional Types - Another Example
  122. Урок 122. 00:07:29
    Making Sense of the "infer" Keyword
  123. Урок 123. 00:02:58
    TypeScript's Got You Covered: Built-in Utility Types
  124. Урок 124. 00:00:52
    Module Introduction
  125. Урок 125. 00:07:10
    What Are Decorators? And ECMAScript Decorators vs Experimental Decorators
  126. Урок 126. 00:01:18
    Exploring Different Types of Decorators
  127. Урок 127. 00:08:10
    Building a First Decorator
  128. Урок 128. 00:05:26
    Building a Class Decorators That Edits a Class
  129. Урок 129. 00:03:08
    Understanding Decorator Code Execution Order
  130. Урок 130. 00:04:18
    Creating a Method Decorator
  131. Урок 131. 00:04:10
    Using Decorators To Solve A Common Problem
  132. Урок 132. 00:03:45
    Implementing A Decorator-based Solution: autobind
  133. Урок 133. 00:03:39
    Replacing Methods with Decorators
  134. Урок 134. 00:04:44
    Introducing the Field Decorator
  135. Урок 135. 00:04:02
    Building Configurable Decorators with Factories
  136. Урок 136. 00:00:41
    Onwards to Experimental Decorators
  137. Урок 137. 00:01:56
    Module Introduction
  138. Урок 138. 00:05:22
    A First Class Decorator
  139. Урок 139. 00:02:03
    Working with Decorator Factories
  140. Урок 140. 00:06:00
    Building More Useful Decorators
  141. Урок 141. 00:02:53
    Adding Multiple Decorators
  142. Урок 142. 00:05:01
    Diving into Property Decorators
  143. Урок 143. 00:05:37
    Accessor & Parameter Decorators
  144. Урок 144. 00:03:12
    When Do Decorators Execute?
  145. Урок 145. 00:08:38
    Returning (and changing) a Class in a Class Decorator
  146. Урок 146. 00:03:45
    Other Decorator Return Types
  147. Урок 147. 00:09:05
    Example: Creating an "Autobind" Decorator
  148. Урок 148. 00:07:29
    Validation with Decorators - First Steps
  149. Урок 149. 00:12:15
    Validation with Decorators - Finished
  150. Урок 150. 00:03:22
    Wrap Up
  151. Урок 151. 00:01:33
    Module Introduction
  152. Урок 152. 00:05:21
    Getting Started
  153. Урок 153. 00:11:44
    DOM Element Selection & OOP Rendering
  154. Урок 154. 00:08:04
    Interacting with DOM Elements
  155. Урок 155. 00:04:45
    Creating & Using an "Autobind" Decorator
  156. Урок 156. 00:09:15
    Fetching User Input
  157. Урок 157. 00:14:11
    Creating a Re-Usable Validation Functionality
  158. Урок 158. 00:11:19
    Rendering Project Lists
  159. Урок 159. 00:15:33
    Managing Application State with Singletons
  160. Урок 160. 00:07:12
    More Classes & Custom Types
  161. Урок 161. 00:06:00
    Filtering Projects with Enums
  162. Урок 162. 00:18:41
    Adding Inheritance & Generics
  163. Урок 163. 00:11:59
    Rendering Project Items with a Class
  164. Урок 164. 00:03:34
    Using a Getter
  165. Урок 165. 00:10:25
    Utilizing Interfaces to Implement Drag & Drop
  166. Урок 166. 00:05:59
    Drag Events & Reflecting the Current State in the UI
  167. Урок 167. 00:08:09
    Adding a Droppable Area
  168. Урок 168. 00:06:45
    Finishing Drag & Drop
  169. Урок 169. 00:01:23
    Wrap Up
  170. Урок 170. 00:01:25
    Module Introduction
  171. Урок 171. 00:02:35
    Writing Module Code - Your Options
  172. Урок 172. 00:10:51
    Working with Namespaces
  173. Урок 173. 00:08:42
    Organizing Files & Folders
  174. Урок 174. 00:02:53
    A Problem with Namespace Imports
  175. Урок 175. 00:12:21
    Using ES Modules
  176. Урок 176. 00:04:58
    Understanding various Import & Export Syntaxes
  177. Урок 177. 00:01:44
    How Does Code In Modules Execute?
  178. Урок 178. 00:02:17
    Understanding "type" Imports
  179. Урок 179. 00:03:15
    Wrap Up
  180. Урок 180. 00:01:15
    Module Introduction
  181. Урок 181. 00:03:36
    The Problem With The TypeScript Compiler
  182. Урок 182. 00:04:14
    Building with Webpack or ESBuild
  183. Урок 183. 00:02:26
    Introducing Vite
  184. Урок 184. 00:07:22
    Using Vite
  185. Урок 185. 00:01:50
    Installing TypeScript on a Per-Project Basis
  186. Урок 186. 00:02:34
    Making Sense of .d.ts Files
  187. Урок 187. 00:01:57
    Importing non-TS Files
  188. Урок 188. 00:00:47
    Wrap Up
  189. Урок 189. 00:01:02
    Module Introduction
  190. Урок 190. 00:05:33
    What is Webpack & Why do we need it?
  191. Урок 191. 00:03:56
    Installing Webpack & Important Dependencies
  192. Урок 192. 00:05:58
    Adding Entry & Output Configuration
  193. Урок 193. 00:07:01
    Adding TypeScript Support with the ts-loader Package
  194. Урок 194. 00:03:34
    Finishing the Setup & Adding webpack-dev-server
  195. Урок 195. 00:04:05
    Adding a Production Workflow
  196. Урок 196. 00:01:42
    Wrap Up
  197. Урок 197. 00:01:10
    Module Introduction
  198. Урок 198. 00:03:44
    Facing Problems with JS Libraries in TS Projects
  199. Урок 199. 00:04:41
    Bridging the Gap with @types Packages
  200. Урок 200. 00:06:44
    Exploring .d.ts Files
  201. Урок 201. 00:02:22
    There Are Libraries With Great TypeScript Support!
  202. Урок 202. 00:08:03
    Exploring Zod as a TypeScript-first Library
  203. Урок 203. 00:04:26
    Defining a More Complex Zod Schema
  204. Урок 204. 00:04:17
    Runtime vs Compile-time Types with Zod
  205. Урок 205. 00:00:42
    Module Introduction
  206. Урок 206. 00:03:57
    Project Setup
  207. Урок 207. 00:02:42
    Getting User Input
  208. Урок 208. 00:02:49
    Setting Up a Google API Key
  209. Урок 209. 00:10:15
    Using Axios to Fetch Coordinates for an Entered Address
  210. Урок 210. 00:06:36
    Rendering a Map with Google Maps (incl. Types!)
  211. Урок 211. 00:01:23
    Module Introduction
  212. Урок 212. 00:04:09
    Creating a React + TypeScript Project
  213. Урок 213. 00:05:48
    Typing Components & Props
  214. Урок 214. 00:02:48
    Using Components & Props
  215. Урок 215. 00:03:02
    TypeScript, The Special "children" Prop & Optional Props
  216. Урок 216. 00:04:04
    Adding Another Component With Props
  217. Урок 217. 00:02:31
    An Alternative Component Function Type Syntax
  218. Урок 218. 00:02:06
    Working with State & TypeScript
  219. Урок 219. 00:05:16
    Passing Functions As Props
  220. Урок 220. 00:04:44
    Handling Form Submission
  221. Урок 221. 00:05:41
    Using Refs with TypeScript
  222. Урок 222. 00:04:06
    More Function Passing & State Updating
  223. Урок 223. 00:01:07
    Wrap Up
  224. Урок 224. 00:00:56
    Module Introduction
  225. Урок 225. 00:03:53
    Node + TypeScript - You Have Multiple Options
  226. Урок 226. 00:07:24
    Project Setup & Configuration
  227. Урок 227. 00:03:29
    Adding Node.js Types & Running a Basic Server
  228. Урок 228. 00:03:28
    Adding & Using Express.js (and its Types)
  229. Урок 229. 00:08:29
    Managing Data With Help Of TypeScript
  230. Урок 230. 00:09:39
    Adding & Testing a First Route (with Data Extraction)
  231. Урок 231. 00:11:40
    Finishing the Basic App
  232. Урок 232. 00:07:29
    Native Node.js TypeScript Support Without Compilation (incl. tsconfig Setup)
  233. Урок 233. 00:09:02
    Type Stripping vs Type Transformation
  234. Урок 234. 00:01:45
    Considering Alternative Runtimes
  235. Урок 235. 00:01:16
    Roundup & Next Steps