Day 1: Introduction to TypeScript & Environment Setup
Start your 30-day journey! Learn what TypeScript is, why it matters, and set up your development environment.
Day 2: Primitive Types: The Building Blocks
Master the core primitive types in TypeScript: string, number, boolean, and more. Learn type inference and annotation.
Day 3: Arrays and Tuples
Learn how to handle lists of data with Arrays and fixed-length collections with Tuples in TypeScript.
Day 4: Objects and Type Aliases
Understand how to structure complex data with Objects and simplify your code using Type Aliases.
Day 5: Interfaces vs. Type Aliases
The age-old question: Interface or Type? Learn the differences, similarities, and when to use which.
Day 6: Functions in TypeScript
Learn how to type function arguments, return values, and optional parameters.
Day 7: The Any, Unknown, and Never Types
Understanding the special types in TypeScript. When to use them, and more importantly, when to avoid them.
Day 8: Introduction to Classes
Dive into Object-Oriented Programming (OOP) with TypeScript Classes. Constructors, properties, and methods.
Day 9: Access Modifiers
Control who can see and modify your class members using Public, Private, and Protected.
Day 10: Inheritance and Abstract Classes
Learn how to extend classes to reuse logic and use Abstract Classes to define contracts for sub-classes.
Day 11: Static Members and Getters/Setters
Master shared class data with Statics and control property access with Getters and Setters.
Day 12: Implementing Interfaces in Classes
Enforce class structure using Interfaces. Learn the `implements` keyword.
Day 13: Union and Intersection Types
Combine types to create flexible and precise definitions using Union (|) and Intersection (&) operators.
Day 14: Literal Types and Enums
Lock down your types to specific values using Literal Types and Enums. Choose the right one for your use case.
Day 15: Generics - Making Reusable Code
Donโt repeat yourself. Use Generics to create reusable, type-safe components and functions.
Day 16: Generic Constraints
Stop using "any" in Generics. Learn how to constrain your types to ensure they have the properties you need.
Day 17: Type Guards and Narrowing
Master the art of runtime type checking. Use typeof, instanceof, and custom type predicates.
Day 18: Discriminated Unions
The most elegant pattern in TypeScript. Handle complex state and logic with ease using tagged unions.
Day 19: The keyof Operator
Unlock the power of index queries. Learn how to extract keys from a type and use them.
Day 20: Utility Types
Partial, Pick, Omit, Readonly... TypeScript comes with a toolkit. Learn how to use it.
Day 21: Mapped Types
Create new types based on old ones by iterating over keys. The foundation of Utility Types.
Day 22: Conditional Types
Ternary operators for types? Yes. Learn how to choose types based on conditions.
Day 23: Template Literal Types
Manipulate string types with template literal syntax. Create powerful string pattern types.
Day 24: Async/Await and Promises
Handling asynchronous operations in TypeScript. Typing Promises and async functions correctly.
Day 25: Modules and Namespaces
Organize your code with ES Modules. Import, Export, and deciding when to use Namespaces (spoiler: rarely).
Day 26: Declaration Files (.d.ts)
Using legacy JS libraries? Learn how to write .d.ts files to describe types for libraries that don't have them.
Day 27: Configuration Deep Dive (tsconfig.json)
Master the compiler. Understand strict mode, target versions, paths, and build options.
Day 28: Linting and Formatting
Keep your code clean and consistent. Integrating ESLint and Prettier with TypeScript.
Day 29: Project - Type-Safe API Client
Putting it all together. Build a generic, type-safe API client wrapper using fetch.
Day 30: Final Recap and Publishing
You did it! A review of the journey and next steps: publishing your own NPM package.