Advanced TypeScript page

This is the second course in the TypeScript series. By the end, you will be comfortable with any types you come across and possess the knowledge to create your own advanced types. The only prerequisite is the first course in the TypeScript series found here.

Before you begin

Click here to join the
Bitovi Community Discord

To get the most out of this course, join the Bitovi Community Discord! Bitovi has a large community with developers who are happy to help with problems and answer questions about this course, TypeScript, and development in general! For questions specific to this course, please use the TypeScript chat room.

At the end of most sections, there will optional exercises to help solidify the content covered. There are a couple of different ways you can do the exercises! If you have an IDE and prefer to use the source code for the exercise - the prompt and code will be available to copy over. Prefer a more hands-off approach? Each exercise will have a link that will open it in CodeSandbox. The solutions to the exercises are posted below each exercise and hidden by an accordion. There are other ways besides the presented solution. Find one you think is cool and want to share? Drop it in Discord!

If you find bugs in this training or have suggestions, create an issue or email


Advanced TypeScript can be generally stated as finding ways to create types from other types. To do this, TypeScript has many powerful features we can work with from looking up types off of other types to conditionally choosing a type based on another.


Next steps

✏️ Head over to the first lesson and strengthen the way you think about TypeScript’s typing systems.