Whether you are a beginner coming from JavaScript, or you already know enough TypeScript to be dangerous, this comprehensive and up-to-date course will teach you how to use TypeScript effectively in production grade applications!
As one of the most popular programming languages in the world, TypeScript has permanently disrupted the JavaScript ecosystem. Many top tech companies have adopted it, making it a valuable skill in today's job market as well as a go to for building successful startup applications.
What you will learn:
We set the stage with solid beginner fundamentals including understanding why and how TypeScript works. Later we delve into advanced concepts and syntax and latest features of the recently released version 5. By the end of this course you will be fluent in the syntax of TypeScript and ready to develop first-class applications.
Hone your skills and learn how to use and implement the TypeScript language effectively! What will you build with TypeScript?
Part 1: Introduction
00:00 - introduction
01:55 - what is typescript
03:44 - benefits of TypeScript
07:04 - TypeScript vs JavaScript
12:10 - tsc and the transpilation process
Part 2: TypeScript Fundamentals
13:42 - installing TypeScript 5.2.2
16:25 - type system: introducing primitive types
22:13 - type system: null and undefined (plus seeing any for the first time)
24:41 - type system: objects and arrays
27:16 - type system: interfaces and type aliases
32:05 - TypeScript's structural type system and excess property checking
38:30 - type system: tuples in TypeScript
40:41 - type system: function signatures
44:24 - type system: extending types and interfaces (plus a comparison of types and interfaces)
49:05 - mixing types and interfaces
51:40 - unions and intersections (| and &)
54:06 - type system: introduction to enums
59:28 - enums in the value space and the type space
1:00:43 - limitations of enums and alternative approaches
1:04:33 - using "as const" for better type inference
1:07:30 - narrowing types using "in"
1:17:18 - using the "satisfies" operator for better inference
1:21:10 - "typeof" and "keyof" in TypeScript
1:25:59 - "as" type assertions
Part 3. Advanced Concepts
1:28:02 - 1st mini project: working with third party code
1:31:00 - 1st mini project: using higher order functions (example "map")
1:33:30 - 1st mini project: Extracting types with the Extract utility type
1:36:20 - 1st mini project: type guards and the "is" predicate
1:38:25 - 1st mini project: running our code
1:39:18 - type system: introduction to classes (getters, setters, private, public, protected and readonly)
1:48:25 - Why to prefer passing function parameters as typed objects or interfaces
1:52:00 - Partial utility type to make fields optional
1:54:10 - class method override keyword
1:55:39 - abstract classes
1:57:40 - classes and the use of implements with interfaces
1:59:44 - type system: dangers of the "any" type (prefer "unknown")
2:03:50 - 2nd mini project: demonstrating a case of "any" undermining our types
2:07:00 - 2nd mini project: function return types and an example with tuples
2:13:00 - 2nd mini project: using class decorators
2:23:37 - 2nd mini project: running our code
2:24:50 - introduction to generics
2:32:01 - reviewing built in Utility types (Record, Omit, Pick, Readonly, Required, Partial)
2:42:40 - creating a custom Pick (building our own Utility type)
2:45:40 - introduction to conditional types
2:51:41 - the "never" type
2:53:30 - 3rd mini project: bringing it all together (generic classes and functions, conditional types, promises, installing types and more)
3:17:14 - setting up a new project (configuring tsconfig options, es module settings, development, watch and build scripts)
Part 4. Wrap Up
3:36:40 - wrapping up
3:38:00 - shortcomings / downsides of the language
3:42:40 - final words and thanks!
Links:
official TS website & docs: https://www.typescriptlang.org/
course github repo: https://github.com/radleylewis/learn-...
pnpm: https://pnpm.io/
ts-node: https://www.npmjs.com/package/ts-node
nodejs: https://nodejs.org/en
If you enjoyed this tutorial please don't forget to like, comment and subscribe for upcoming content!