- Basics of Typescript -77 lessons (77 lessons (5h 41min))
- NOTE: this section has been extracted to its own repository: typescript-stephengrider-basics-of-typescript
- moved and labelled as
Section 01 to Section 09 - Basics of Typescript - this section is also covered in courses:
- microservices-with-node-js-and-react - section 25: appendix B - basics of typescript
- typescript-the-complete-developers-guide - section 01 to section 09
- react-and-typescript-build-a-portfolio-project - section 26: Appendix:Typescript
- Section 01 - Getting started with TypeScript
- Section 02 - What is a Type System
- Section 03 - Type Annotations in Action
- Section 04 - Annotations with Functions and Objects
- Section 05 - Mastering Typed Arrays
- Section 06 - Tuples in TypeScript
- Section 07 - The All Important Interface
- Section 08 - Building Functionality with Classes
- Section 09 - Design Patterns with TypeScript
- Section 10 - More Design Patterns
- Section 11 - Reusable Code
- Section 13 - Let's Build a Framework
- Section 14 - Express + TypeScript Integration
- Section 15 - Decorators
- Section 16 - Advanced Express and TS Integration
- Section 17 - React and Redux Class Components with TypeScript
- Section 18 - React Functional Components with TypeScript
- Section 19 - Redux with Functional Components and TypeScript
- Section 20 - Extras
- How to Get Help (1min)
- Join Our Community! (1min)
- Course Resources (1min)
- Typescript Overview (6min)
- Environment Setup (8min)
- Important Axios and TypeScript Version Information (1min)
- A First App (5min)
- Executing Typescript Code (5min)
- One Quick Change (4min)
- Catching Errors with Typescript (7min)
- Catching More Errors! (5min)
- Do Not Skip - Course Overview (4min)
- Types (5min)
- More on Types (6min)
- Examples of Types (5min)
- Where Do We Use Types? (1min)
- Type Annotations and Inference (2min)
- Annotations with Variables (5min)
- Object Literal Annotations (7min)
- Annotations Around Functions (6min)
- Understanding Inference (4min)
- The 'Any' Type (8min)
- Fixing the 'Any' Type (2min)
- Delayed Initialization (3min)
- When Inference Doesn't Work (5min)
- More on Annotations Around Functions (5min)
- Inference Around Functions (6min)
- Annotations for Anonymous Functions (2min)
- Void and Never (3min)
- Destructuring with Annotations (4min)
- Annotations Around Objects (7min)
- Arrays in Typescript (5min)
- Why Typed Arrays? (5min)
- Multiple Types in Arrays (3min)
- When to Use Typed Arrays (1min)
- Tuples in Typescript (4min)
- Tuples in Action (5min)
- Why Tuples? (3min)
- Interfaces (1min)
- Long Type Annotations (5min)
- Fixing Long Annotations with Interfaces (5min)
- Syntax Around Interfaces (4min)
- Functions in Interfaces (5min)
- Code Reuse with Interfaces (4min)
- General Plan with Interfaces (3min)
- Classes (4min)
- Basic Inheritance (3min)
- Instance Method Modifiers (7min)
- Fields in Classes (6min)
- Fields with Inheritance (4min)
- Where to Use Classes (1min)
- Updated Parcel Instructions (1min)
- App Overview (3min)
- Bundling with Parcel (5min)
- Project Structure (3min)
- IMPORTANT Info About Faker Installation (1min)
- Generating Random Data (5min)
- Type Definition Files (5min)
- Using Type Definition Files (6min)
- Export Statements in Typescript (5min)
- Defining a Company (5min)
- Note on Generating an API Key (1min)
- Adding Google Maps Support (8min)
- Required Update for New @types Library (1min)
- Google Maps Integration (4min)
- Exploring Type Definition Files (3min)
- Hiding Functionality (6min)
- Why Use Private Modifiers? Here's Why (8min)
- Adding Markers (9min)
- Duplicate Code (3min)
- One Possible Solution (7min)
- Restricting Access with Interfaces (6min)
- Implicit Type Checks (3min)
- Showing Popup Windows (7min)
- Updating Interface Definitions (7min)
- Optional Implements Clauses (6min)
- App Wrapup (8min)
- App Overview (2min)
- Configuring the TS Compiler (8min)
- Concurrent Compilation and Execution (5min)
- A Simple Sorting Algorithm (5min)
- Sorter Scaffolding (3min)
- Sorting Implementation (5min)
- Two Huge Issues (8min)
- Typescript is Really Smart (10min)
- Type Guards (9min)
- Why is This Bad? (2min)
- Extracting Key Logic (7min)
- Separating Swapping and Comparison (14min)
- The Big Reveal (5min)
- Interface Definition (5min)
- Sorting Arbitrary Collections (11min)
- Linked List Implementation (24min)
- Completed Linked List Code (1min)
- Just...One...More...Fix... (4min)
- Integrating the Sort Method (3min)
- Issues with Inheritance (7min)
- Abstract Classes (6min)
- Why Use Abstract Classes? (5min)
- Solving All Issues with Abstract Classes (4min)
- Interfaces vs Abstract Classes (3min)
- Project Overview (2min)
- Project Setup (6min)
- CSV Data (1min)
- Type Definition Files - Again! (7min)
- Reading CSV Files (5min)
- Running an Analysis (4min)
- Losing Dataset Context (5min)
- Using Enums (6min)
- When to Use Enums (7min)
- Extracting CSV Reading (9min)
- Data Types (3min)
- Converting Date Strings to Dates (5min)
- Converting Row Values (4min)
- Type Assertions (4min)
- Describing a Row with a Tuple (7min)
- Not Done with FileReader Yet! (3min)
- Understanding Refactor #1 (5min)
- Creating Abstract Classes (4min)
- Variable Types with Generics (1min)
- Applying a Type to a Generic Class (4min)
- Alternate Refactor (4min)
- Interface-Based Approach (2min)
- Extracting Match References - Again! (3min)
- Transforming Data (3min)
- Updating Reader References (4min)
- Inheritance vs Composition (3min)
- More on Inheritance vs Composition (7min)
- A Huge Misconception Around Composition (5min)
- Goal Moving Forward (5min)
- A Composition-Based Approach (6min)
- Implementing an Analyzer Class (7min)
- Building the Reporter (5min)
- Putting It All Together (4min)
- Generating HTML Reports (5min)
- One Last Thing! (6min)
- Oops, My Bad (3min)
- App Wrapup (4min)
- More on Generics (5min)
- Type Inference with Generics (3min)
- Function Generics (6min)
- Generic Constraints (6min)
- App Overview (3min)
- Reminder on Using Parcel with npx (1min)
- Parcel Setup (3min)
- Framework Structure (8min)
- Designing the User (3min)
- Retrieving User Properties (6min)
- Optional Interface Properties (7min)
- An Eventing System (3min)
- Listener Support (4min)
- Storing Event Listeners (5min)
- Dynamic Array Creation (5min)
- Triggering Event Callbacks (4min)
- Small Update for JSON server and Parcel Start Script (1min)
- Adding JSON Server (7min)
- Understanding REST Conventions (9min)
- Adding Fetch Functionality (5min)
- Successfully Fetching Model Data (5min)
- Saving User Data (9min)
- Refactoring with Composition (4min)
- Re-Integrating Eventing (13min)
- Composition with Nested Objects (3min)
- A More Complicated Extraction (3min)
- Options for Adapting Sync (10min)
- Refactoring Sync (11min)
- Generic Constraints Around Sync (4min)
- Connecting Sync Back to User (4min)
- Optional Properties (7min)
- No overload matches this call - this.data (1min)
- Extracting an Attributes Class (3min)
- The Get Method's Shortcoming (6min)
- Two Important Rules (7min)
- An Advanced Generic Constraint (10min)
- Re-Integrating Attributes (3min)
- Composition is Delegation (5min)
- Reminder on Accessors (5min)
- Passthrough Methods (7min)
- A Context Issue (9min)
- Setting Data While Triggering (3min)
- Fetching User Data (6min)
- Saving Data (6min)
- Composition vs Inheritance...Again! (9min)
- Extracting a Model Class (7min)
- Extending the User (5min)
- Final User Refactor (4min)
- Model Wrapup (4min)
- Shortened Passthrough Methods (6min)
- Users Collection (3min)
- Implementing a Users Collection (3min)
- Parsing User JSON (7min)
- Generic User Collection (6min)
- A Class Method for Collections (2min)
- View Classes (4min)
- Building the UserForm (5min)
- The UserForm's Render Method (3min)
- Rendering HTML (2min)
- Defining an Events Map (6min)
- Binding Event Handlers (7min)
- Adding Model Properties (4min)
- Binding Events on Class Name (5min)
- Adding Methods to the User (5min)
- Re-Rendering on Model Change (5min)
- Reading Input Text (5min)
- Strict Null Checks (6min)
- Reusable View Logic (12min)
- Extracting a View Class (4min)
- Type 'K' does not satisfy the constraint 'HasId'.ts (1min)
- Extending with Generic Constraints (12min)
- Saving Data From a View (4min)
- UserEdit and UserShow (6min)
- Nesting with Regions (5min)
- Mapping Regions (6min)
- Testing Region Mapping (4min)
- View Nesting (7min)
- Collection Views (2min)
- CollectionView Implementation (17min)
- App Wrapup (4min)
- Typescript with JS Libraries (6min)
- App Overview (3min)
- Project Setup (4min)
- Basic Routes with Express (7min)
- Using an Express Router (4min)
- Parsing Form Bodies (6min)
- Why Doesn't Express play Nicely with TS? (14min)
- Issues with Type Definition Files (10min)
- Dealing with Poor Type Defs (6min)
- Wiring Up Sessions (9min)
- Checking Login Status (3min)
- Logging Out (1min)
- Protecting Routes (5min)
- A Closer Integration (7min)
- The Refactoring Process (3min)
- Prototypes Reminder (9min)
- Note about target environment in tsconfig (1min)
- Decorators in Typescript (7min)
- Details on Decorators (8min)
- Property Descriptors (6min)
- Wrapping Methods with Descriptors (2min)
- Decorator Factories (3min)
- Decorators Around Properties (4min)
- More on Decorators (8min)
- A Quick Disclaimer (1min)
- Project Overview (8min)
- Why is This Hard? (7min)
- Solution Overview (6min)
- Note about target environment in tsconfig (1min)
- Basics of Metadata (9min)
- Practical Metadata (11min)
- Let's Refactor! (5min)
- The 'Get' Decorator (4min)
- ES2016 Fix for Controller Decorator (1min)
- The Controller Decorator (4min)
- Proof of Concept (5min)
- A Few Fixups (8min)
- Defining a RouteBinder (5min)
- Closed Method Sets with Enums (8min)
- Metadata Keys (4min)
- The 'Use' Decorator (8min)
- Testing Use (3min)
- Body Validators (6min)
- Automated Validation (3min)
- Testing Automated Validation (6min)
- Fixing Routes (6min)
- Using Property Descriptors for Type Checking (5min)
- App Wrapup (1min)
- React and Redux Overview (6min)
- App Overview (2min)
- Generating the App (1min)
- ReactDOM warning with React v18 (1min)
- Simple Components (4min)
- Interfaces with Props (3min)
- Handling Component State (3min)
- Confusing Component State! (11min)
- Functional Components (3min)
- createStore Strikethrough in Code Editor (1min)
- Redux Setup (8min)
- Action Creators with Typescript (7min)
- Action Types Enum (5min)
- The Generic Dispatch Function (5min)
- A Reducer with Enums (7min)
- Validating Store Structure (5min)
- Connecting a Component to Redux (6min)
- Rendering a List (5min)
- Adding in Delete Functionality (3min)
- Breaking Out Action Creators (3min)
- Expressing Actions as Type Union (4min)
- Type Guards in Reducers (3min)
- Wiring up deleteToDo Action (1min)
- Again, Type Definition Files (3min)
- Tracking Loading with Component State (4min)
- App Wrapup (4min)
- Generating TypeScript Enabled Projects (1min)
- ReactDOM warning with React v18 (1min)
- File Extensions and starting Up React (5min)
- Changes with TypeScript (3min)
- The Big Difference with Props (4min)
- Explicit Component Type Annotations (6min)
- Property 'children' does not exist (1min)
- Annotations with Children (6min)
- State with TypeScript (5min)
- Type Inference with State (6min)
- Quick Finish to the Example (1min)
- More on State (4min)
- Type Unions in State (6min)
- Inline Event Handlers (3min)
- Typing Standalone Event Handlers (3min)
- Handling Drag Events Too! (4min)
- Applying Types to Refs (6min)
- More on Refs (4min)
- App Overview (2min)
- Updated Install Command and Versions for React 18 (1min)
- Project Setup (2min)
- Redux Store Design (9min)
- Reducer Setup (8min)
- Annotating the Return Type (1min)
- Typing an Action (2min)
- Separate Interfaces for Actions (4min)
- Applying Action Interfaces (4min)
- Adding an Action Type Enum (6min)
- A Better Way to Organize Code (4min)
- Small Update for Try / Catch Block (1min)
- Adding Action Creators (4min)
- Adding Request Logic (3min)
- Applying Typings to Dispatch (3min)
- createStore Strikethrough in Code Editor (1min)
- Setting Up Exports (4min)
- Wiring Up to React (3min)
- Oops... Initial State! (1min)
- Reminder on Event Types (3min)
- TypeScript Error When Dispatching Action (1min)
- Calling an Action Creator (3min)
- Binding Action Creators (4min)
- Selecting State (4min)
- Awkward Typings Around React-Redux (5min)
- Creating a Typed Selector (4min)
- Consuming Store State (3min)
- Quick Wrapup - Final Lecture (3min)