Tipos, functions (funciones)

Las funciones son el componente mas básico del como los datos son transferidos a través de JavaScript. TypeScript permite especificar los tipos de los parámetros recibidos así como del tipo de valor retornado.

Anotaciones para los parámetros de una función

Cuando se declara una función es posible añadir anotaciones después de cada uno de los parámetros de manera que estos indiquen el tipo de cada uno de estos.

function saludar(nombre: string) {
    console.log(`Hola ${nombre}`);
}

saludar("Sandra");

Cuando se proporciona un valor invalido al argumento, este genera un error en el compilar.

Tipos de valor de retorno de la función

Es posible también definir el tipo de valor que retorna la función.

function elevarAlCuadrado(base: number): number {
    return base * base;
}

let numeroBase = 10;
let numeroAlCuadrado = elevarAlCuadrado(numeroBase);
console.log(numeroAlCuadrado);

En el ejemplo anterior hemos utilizado un número base que es 10, este se asigna a la variable numeroBase, de ahí se pasa como argumento a la función elevarAlCuadrado la cual especifica que debe retornar un numero number.

Así como pasa con las variables, en muchas de las ocasiones no es necesario especificar el tipo que una función retorna ya que TypeScript obtiene este desde la propia interpretación del código basado en la instrucción return.

Funciones anónimas

Las funciones anónimas anónimas son un poco diferentes de las funciones declarativas. Cuando una función aparece en un lugar en donde TypeScript determina como la función va a ser invocada, los parámetros de esta función son asignados automáticamente.

const nombres = ["Juan", "Pedro", "Luis"];

nombres.forEach(function (s) {
    console.log(s.toUpperCase());
});

nombres.forEach((s) => {
    console.log(s.toUpperCase());
});

En el ejemplo anterior hemos iterado la variable nombres mediante funciones anónimas. En el segundo caso utilizando una función que ademas de ser anónima es una función tipo flecha o arrow function. En ambos ejemplos TypeScript recibe la función y puede determinar el tipo de los argumentos, en este caso a partir del arreglo que contiene strings.

Al igual que en otros escenarios en donde el tipo puede ser determinado es posible omitir las anotaciones, pero si considera que estas ayudaran a la legibilidad y a entender mejor el algoritmo, se recomienda que se utilicen.