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