Una clase genérica tiene una forma similar a una interface. Las clases genéricas tienen un parámetro dentro de los brackets <>
que anteceden al nombre de la clase.
class ClaseGenericaDeSoloNumeros<T> {
valorCero: T;
agregar: (x: T, y: T) => T;
}
const miNumero = new ClaseGenericaDeSoloNumeros<number>();
miNumero.valorCero = 0;
miNumero.agregar = (x, y) => x + y;
Este es un uso bastante literal de ClaseGenerica
, pero como podemos ver nada esta restringiendo que se utilicen solo números. Como argumentos podríamos utilizar string
sin ningún problema.
const miString = new ClaseGenericaDeSoloNumeros<string>();
miString.valorCero = "";
miString.agregar = (x, y) => x + y;
Así como en una interface, el indicar el tipo de parámetro dentro de una clase, nos permite asegurarnos que todas las propiedades de la clase funcionen con el mismo tipo.
Las clases tienen dos elementos, la parte de instancia y la parte estática. Las clases genéricas actúan solo en la parte de su instancia. Los elementos estáticos no pueden utilizar el parámetro que define el tipo de clase.