Generic Interfaces
Start course

This module looks at Generics in Typescript, and how to create different types of generic Functions, Classes and Interfaces.

Learning Objectives

The objectives of this module are to provide you with an understanding of:

  • How to create Generic Functions
  • How to create Generic Classes
  • How to create Generic Interfaces

Intended Audience

This learning path is aimed at all who wish to learn how to use TypeScript


It is essential you understand the face of contemporary web development to attend this course. You should have a good working knowledge of Javascript.

Please note: Before attending this class delegates must have a Microsoft account (signing up for one is free).


We welcome all feedback and suggestions - please contact us at to let us know what you think.


Generic interfaces are often used to describe objects that may be generics themselves. If we think about the vehicle, car, bus class inheritance tree, we may wish to print out its details at some point. So we've created a VehiclePrinter interface that will work with any type T that extends the vehicle class. The vehicle class is defined as abstract below along with car and bus classes that both extend it. There's also an independent plane class. On line 25, we created generic class called garage that accepts any type that extends the vehicle class. We want to print vehicles that can be parked in the garage. We also make this generic class implement the generic interface VehiclePrinter which accepts the same T type as the class. The class defines an array of type T, a park function to add to the array, and the required implementation of the print method. Any type of vehicle can now use both the park and print method as long as the vehicle could be passed into the garage in the first place. We create park and print vehicles on lines 42 to 47. Notice how the error is signified on parking the plane on line 44. We also demonstrate that any instance of a vehicle could call this method on the garage, even if it's not currently parked there, by creating another instance of car and then calling print with it on lines 49 and 50. So you've explored how you can create a generic interface and use it with a generic class. In this module, we've also looked at generic functions and how we can constrain function parameters. Generics are really useful to help reduce duplication of similar code and make the intention of it clear.

About the Author
Learning Paths

Ed is an Outstanding Trainer in Software Development, with a passion for technology and its uses and holding more than 10 years’ experience.

Previous roles have included being a Delivery Manager, Trainer, ICT teacher, and Head of Department. Ed continues to develop existing and new courses, primarily in web design using: PHP, JavaScript, HTML, CSS, SQL, and OOP (Java), Programming Foundations (Python), and DevOps (Git, CI/CD, etc). Ed describes himself as practically minded, a quick learner, and a problem solver who pays great attention to detail. 

Ed’s specialist area is training in Emerging Technologies, within Web Development. Ed mainly delivers courses in JavaScript covering vanilla JS, ES2015+, TypeScript, Angular, and React (the latter is authored by Ed) and has delivered on behalf of Google for PWAs. Ed has also developed a new suite of PHP courses and has extensive experience with HTML/CSS and MySQL. 

Ed is responsible for delivering QA’s Programming Foundations course using the Eclipse IDE. His skillset extends into the DevOps sphere, where he is able to deliver courses based around Agile/Scrum practices, version control, and CI/CD.

Covered Topics