Variables de tipo en TypeScript
Para una mejor comprensión del concepto de genéricos creemos nuestra primera función - función identidad. Esta función devuelve exactamente lo que se le pasó - con el mismo tipo.
Para empezar, escribamos las variantes de nuestra función por separado.
Escribamos una función que acepte un número como parámetro y devuelva un número:
function func(data: number): number {
return data;
}
Ahora escribamos una función que acepte una cadena como parámetro y devuelva una cadena:
function func(data: string): string {
return data;
}
Supongamos ahora que queremos que todo esto lo haga una sola función. Es decir, queremos realizar una generalización.
Para ello utilizamos una variable de tipo,
que guarda el tipo de datos. Esta variable se declara
entre corchetes angulares antes de los paréntesis
con los parámetros de la función. Declaremos
esta variable, dándole el nombre T
(puede ser cualquier nombre):
function func <T>(aquí los parámetros) {
return data;
}
Después de esto, tendremos la variable T,
que podremos usar para guardar en ella el tipo del parámetro, y luego
especificarlo como el tipo de retorno.
Especificamos a nuestro parámetro el tipo de nuestra variable:
function func <T>(data: T) {
return data;
}
Resultará que el parámetro puede ser pasado
en cualquier tipo, y este tipo se guardará en nuestra
variable T.
Ahora usemos el valor de la variable T
para especificar el resultado de la función:
function func <T>(data: T): T {
return data;
}
Ahora resultará que el tipo de resultado de la función se obtendrá del tipo del parámetro. Comprobémoslo.
Llamemos a la función con un número:
console.log( func(3) ); // mostrará 3
Llamemos a la función con una cadena:
console.log( func('x') ); // mostrará 'x'
Crea una función que acepte como parámetro o dos números, o dos cadenas. El resultado de la función debe ser devolver la suma de los parámetros.