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:

typescriptfunction func(data: number): number {
  return data;
}

Ahora escribamos una función que acepte una cadena como parámetro y devuelva una cadena:

typescriptfunction 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):

typescriptfunction 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:

typescriptfunction 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:

typescriptfunction 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:

typescriptconsole.log( func(3) );   // mostrará 3

Llamemos a la función con una cadena:

typescriptconsole.log( func('x') ); // mostrará 'x'
Задание 1

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.