# Total TypeScript Learning Plan

Goal: Learn the TypeScript skills you need to ship any application or library.

Curriculum: https://totaltypescript.com/

Requirements:

- Basic knowledge of JavaScript
- Core Volume of Total TypeScript

## Schedule

Advanced users can begin at week 3.

Week 1: Beginners' TypeScript Exercises 1-9

- Basic types
- Basic annotations
- Arrays

Week 2: Beginners' TypeScript Exercises 10-18

- Union types intro
- Typing functions
- Typing async functons
- Creating types from other types

Week 3: Type Transformations Sections 1-2

- Intro to type helpers
- keyof, typeof, ReturnType
- Unions, discriminated unions
- Indexed access to types

Week 4: Type Transformations sections 3-4

- Template literals
- Build your own type helpers
- Intro to 'generics' in types

Week 5: Type Transformations sections 5-6

- Conditional types
- infer keyword
- Mapped types
- Transforming unions using mapped types

Week 6: TypeScript Generics sections 1-2

- Intro to generics in functions & classes
- Manually passing type arguments to functions

Week 7: TypeScript Generics sections 3-4

- Understanding type arguments
- Spotting missing/useless generics

Week 8: TypeScript Generics sections 5-6

- Function overloads
- Generics challenges

Week 9: Advanced Patterns sections 1-2

- Branded types
- Understanding globals

Week 10: Advanced Patterns sections 3-4

- Type predicates
- Assertion functions
- Classes

Week 11: Advanced Patterns sections 5-6

- Deep-dive into 3rd-party libraries
- Identity functions

Week 12: Advanced Patterns/Type Transformations Challenges

- Review Type Transformations challenges
- Work on Advanced Patterns challenges

Week 13 (bonus): Zod Tutorial

- Runtime checking
- Transforming data
