Funciones 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.