Similar to generic interfaces, we can also define generic classes. We define classes with a generic type in angle brackets (<>), as shown:
class GenericClass<T> {
add: (a: T, b: T) => T;
}
var myGenericClass = new GenericClass<number>();
myGenericClass.add = function(a, b) { return a + b; };
Here, the generic class is instantiated by passing the generic data type as number. So, the add function will process and add two numbers passed as parameters.