Introducción a los tipos de funciones en TypeScript
TypeScript requiere tipos para todo. Esto incluye tus funciones. Debes definir tipos para las entradas y las salidas.
Sintaxis de funciones
Defines los tipos de entrada y un tipo de salida de esta manera:
function add(x: number, y: number): number {
return x + y;
}
TypeScript también utiliza la inferencia de tipos. No siempre es necesario escribir el tipo de salida; el compilador lo encuentra por ti.
Si tu función devuelve diferentes tipos, TypeScript lo gestiona. Por ejemplo, si una función devuelve un número o una cadena de texto, el compilador detecta ambos.
Tipos de retorno especiales
void: Úsalo cuando una función no devuelva nada.never: Úsalo cuando una función lance un error o detenga el programa.
Parámetros
Puedes hacer que los parámetros sean opcionales usando un signo de interrogación.
function makeProfile(name: string, age: number, url?: string) {
// code
}
También puedes usar valores por defecto. Esto hace que un parámetro sea opcional sin necesidad de símbolos especiales.
function makeProfile(name: string, age: number, url: string = "www.example.com") {
return name + " visits " + url;
}
Funciones de callback
Las funciones son valores. Puedes pasarlas como argumentos. Para definir un tipo de callback, utiliza esta sintaxis:
function makePage(func: (n: string, a: number, u?: string) => string, param1: string, param2: number) {
func(param1, param2);
}
Los nombres de los parámetros en el callback no importan. Solo importan los tipos.
Arrays de funciones
Si necesitas una lista de funciones, defínelas como un array de ese tipo de función.
function applyMath(funcs: ((a: number, b: number) => number)[], x: number, y: number) {
// code
}
Parámetros rest
Utiliza el operador spread para aceptar cualquier número de argumentos. Esto almacena todas las entradas en un array.
function sum(...numbers: number[]) {
// code
}
sum(1, 2, 3);
Fuente: https://dev.to/jsha/introduction-to-typescript-function-types-hin