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