Funciones en TypeScript

Author
Por Darío Rivera
Publicado el en TypeScript

Gracias a TypeScript, es posible recibir y retornar variables con tipo en las funciones. Ya vimos en un anterior artículo cómo definir variables en TypeScript. En este post, vamos a ir un poco más allá y ver su uso en funciones.

Número de argumentos

En primer lugar y antes de entrar de lleno con los tipos, veamos que en TypeScript aún cuando no se defina un tipo para los parámetros y un valor de retono, habrá comprobación del número de argumentos pasados a una función.

function sum(a, b)
{
  return a + b;
}

sum(6);

El código anterior lanzará el siguiente error en el compilador por llamar a la funcion solo con un solo parámetro cuando se requieren dos.

error TS2554: Expected 2 arguments, but got 1.

Argumentos de función

En TypeScript es posible declarar una función con el tipo de sus parámetros. Observa el siguiente ejemplo en donde hemos definido un parámetro de tipo string.

function printName(userName: string)
{
    return 'Hello ' + userName;
}

Es posible incluso, definir en la signature de la función un parámetro más complejo como una estructura. En el siguiente ejemplo el parámetro debe ser un objeto que tenga definidos los atributos name y age.

interface User {
    name: string,
    age: number
}

function printName(userName: User) {
    return 'Hello ' + userName.name;
}

Valores de retorno

También es posible definir cuál tipo debe devolver una función en TypeScript.

function printName(userName: string): string
{
    return 'Hello ' + userName;
}

Es posible incluso, definir en la signature de la función un valor de retorno más complejo como una estructura. En el siguiente ejemplo el valor de retorno debe ser un objeto que tenga definidos los atributos saludo y userName.

function printName(userName: string): {
    saludo: string,
    userName: string
} {
    return {
        'saludo': 'Hello',
        'userName': userName
    };
}

Incluso, el valor de retorno podría ser una Interfaz (Puedes ver más sobre interfaces en Interfaces en TypeScript).

interface User {
    saludo: string,
    userName: string
}

function printName(userName: string): User {
    return {
        'saludo': 'Hello',
        'userName': userName
    };
}

Funciones como parámetros

Las funciones en typescript también pueden ser definidas como parámetros de funciones. Estas expresiones particulares de TypeScript se les suele llamar function type expressions o expresiones de tipo de función.

// función que requiere como primer parámetro
// otra función con un argumento string
function greeter(fn: (a: string) => void) {
  fn("Hello, World");
}

// función que cumple con el parámetro de la anterior función
function printToConsole(s: string) {
  console.log(s);
}

// paso de función como parámetro
greeter(printToConsole);

En el anterior ejemplo podemos ver como se define la función greeter que requiere un parámetro llamado fn de tipo función. A su vez, esta función debe cumplir con la firma (a: string) => void.

Después, definimos una función que cumple con la firma del parámetro requerido en la función inicial, y después esta se pasa como parámetro al ejecutar dicha función greeter.

Hasta aquí, tienes casi todas las herramientas para crear y user tu propias funciones de TypeScript. Si quieres ir un poco más allá, te recomiendo ver también las Firmas de llamada y de Constructor en Typescript. Hasta la próxima.


Acerca de Darío Rivera

Author

Application Architect at Elentra Corp . Quality developer and passionate learner with 10+ years of experience in web technologies. Creator of EasyHttp , an standard way to consume HTTP Clients.

LinkedIn Twitter Instagram

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.