Cuando se comienzan a utilizar generics, se crean funciones que obligan al programador a usar el tipado de los par谩metros dentro del cuerpo de la funci贸n de una forma correcta.
Regresemos a la funci贸n identidad
que vimos anteriormente.
function identidad<T>(arg: T): T {
return arg;
}
Si intentamos utilizar la propiedad length
como parte del argumento arg
el compilador nos mostrara un error.
function identidad<T>(arg: T): T {
console.log(arg.length); // <- error
return arg;
}
Lo que sucede es que estamos asumiendo que cualquier tipo enviado como T
tendr谩 la propiedad length
, escenario que no es real.
Sin embargo si por ejemplo lo que estamos enviando es un arreglo de valores de cualquier tipo, sabemos que el tipo Array
tiene una propiedad length
, por lo cual esta funci贸n operar铆a de forma correcta.
function identidad<T>(arg: T[]): T[] {
return arg;
}
La funci贸n gen茅rica toma el par谩metro
T
, lo aplica a un arreglo de enviado como argumento que tiene valor del tipoT
y retorna un arreglo de valores del mismo tipo.