- What is TypeScript? Why use it?
- Installing TypeScript
- Configuring tsconfig.json
- Running TypeScript files
- TypeScript vs JavaScript
- Type Annotations: string, number, boolean
- Variables: let, const
- Functions with typed parameters and return types
- Arrays and Tuples typing
- Object typing
- Type Inference
- Union Types
- Literal Types
- any type
- Type Aliases
- Type Assertions (Type Casting)
- Enums
- Basic Error Handling
- Optional Parameters
- Default Parameters
- Rest Parameters
- Function Overloading
- Structural Typing (Duck Typing)
- Narrowing Types (Type Guards)
- typeof and instanceof checks
- never type
- Interfaces (Basic)
- Interfaces vs Type Aliases
- Extending Interfaces
- Readonly Properties
- Index Signatures
- Optional Chaining (?.)
- Nullish Coalescing (??)
- Intersection Types (&)
- Discriminated Unions
- Type Literals
- Mapped Types (Basic)
- Introduction to Generics
- Generic Functions
- Generic Interfaces
- Generic Classes
- Constraining Generics (extends keyword)
- Default Generic Types
- Utility Types: Partial, Required, Readonly, Record, Pick, Omit, Exclude, Extract, NonNullable, ReturnType, Parameters
- Declaration Merging
- Key Remapping in Mapped Types
- Recursive Types
- Template Literal Types
- Index Access Types
- Classes in TypeScript
- Access Modifiers: public, private, protected
- Readonly Properties in Classes
- Getters & Setters
- Abstract Classes
- Interfaces vs Abstract Classes
- Static Properties & Methods
- Inheritance in TypeScript
- Import and Export Syntax
- Working with TypeScript Namespaces
- ES6 vs TypeScript Module Syntax
- Conditional Types
- Type Predicates
- Infer Keyword
- Complex Mapped Types
- Utility Types in Custom Scenarios
- Using DefinitelyTyped (@types)
- Writing Type Declarations
- Type Declarations for JS Libraries
- Working with third-party types
- Deep Dive into tsconfig.json
- Strict Mode
- Type Checking Best Practices
- TypeScript Paths Aliases
- Project References
- Using TypeScript with Babel
- Typing React Functional Components
- Typing Props and State
- Typing React Events
- Typing Hooks (useState, useEffect)
- Typing Context API
- Typing Refs
- Generics in React Components
- Forms with TypeScript
- Conditional Rendering with TypeScript
- Setting up Node.js + TypeScript
- Typing Express Applications
- Typing Middleware
- Working with Async/Await (Typed)
- Working with Environment Variables
- Typing APIs
- Folder Structure for TypeScript Projects
- Code Splitting
- Consistent Type Declarations
- Enabling strictNullChecks
- Linting with ESLint + TypeScript
- TypeScript with Prettier
- Unit Testing with TypeScript
- Using tsconfig-paths
- Error Handling Patterns
- TypeScript Compiler API
- Custom Transformers
- Working with Monorepos (Lerna / Nx)
- Building Typed Libraries
- TypeScript in Microservices