En TypeScript, las funciones son una parte fundamental del lenguaje y se pueden tipar de varias maneras para asegurar que se comporten de la manera esperada. En esta sección, aprenderemos cómo definir tipos para funciones, cómo usar funciones anónimas y cómo trabajar con funciones que tienen parámetros opcionales y predeterminados.

Contenido

Definición de Tipos de Función

En TypeScript, podemos definir el tipo de una función especificando los tipos de sus parámetros y el tipo de su valor de retorno. Esto se hace utilizando la siguiente sintaxis:

function nombreFuncion(param1: tipo1, param2: tipo2): tipoRetorno {
    // cuerpo de la función
}

Ejemplo

function suma(a: number, b: number): number {
    return a + b;
}

En este ejemplo, suma es una función que toma dos parámetros de tipo number y devuelve un valor de tipo number.

Tipado de Funciones como Tipos

También podemos definir el tipo de una función utilizando una sintaxis de tipo de función. Esto es útil cuando queremos asignar una función a una variable o pasarla como argumento a otra función.

let miFuncion: (a: number, b: number) => number;

miFuncion = function(x: number, y: number): number {
    return x + y;
}

En este ejemplo, miFuncion es una variable que puede almacenar cualquier función que tome dos parámetros de tipo number y devuelva un number.

Funciones Anónimas

Las funciones anónimas son funciones que no tienen un nombre. Son útiles cuando queremos definir una función rápidamente sin necesidad de nombrarla. En TypeScript, podemos tipar funciones anónimas de la misma manera que las funciones nombradas.

Ejemplo

let multiplicar = function(a: number, b: number): number {
    return a * b;
}

En este ejemplo, multiplicar es una función anónima que toma dos parámetros de tipo number y devuelve un number.

Funciones con Parámetros Opcionales y Predeterminados

En TypeScript, podemos definir parámetros opcionales y predeterminados en nuestras funciones. Los parámetros opcionales se indican con un signo de interrogación (?) después del nombre del parámetro, y los parámetros predeterminados se definen asignándoles un valor por defecto.

Parámetros Opcionales

function saludar(nombre: string, saludo?: string): string {
    if (saludo) {
        return `${saludo}, ${nombre}!`;
    } else {
        return `Hola, ${nombre}!`;
    }
}

En este ejemplo, saludo es un parámetro opcional. Si no se proporciona, la función aún funcionará correctamente.

Parámetros Predeterminados

function saludarConPredeterminado(nombre: string, saludo: string = "Hola"): string {
    return `${saludo}, ${nombre}!`;
}

En este ejemplo, saludo tiene un valor predeterminado de "Hola". Si no se proporciona un valor para saludo, se usará el valor predeterminado.

Ejercicios Prácticos

Ejercicio 1

Define una función llamada restar que tome dos parámetros de tipo number y devuelva la resta de ambos. Asegúrate de tipar correctamente la función.

function restar(a: number, b: number): number {
    return a - b;
}

Ejercicio 2

Define una función anónima que tome un parámetro de tipo string y devuelva la longitud de la cadena. Asigna esta función a una variable llamada longitudCadena.

let longitudCadena = function(cadena: string): number {
    return cadena.length;
}

Ejercicio 3

Define una función llamada concatenar que tome dos parámetros de tipo string, donde el segundo parámetro es opcional. Si el segundo parámetro no se proporciona, la función debe devolver solo el primer parámetro.

function concatenar(a: string, b?: string): string {
    if (b) {
        return a + b;
    } else {
        return a;
    }
}

Conclusión

En esta sección, hemos aprendido cómo definir tipos para funciones en TypeScript, cómo trabajar con funciones anónimas y cómo manejar parámetros opcionales y predeterminados. Estos conceptos son fundamentales para escribir código TypeScript robusto y seguro. En la próxima sección, exploraremos los módulos y espacios de nombres en TypeScript, lo que nos permitirá organizar mejor nuestro código.

¡Sigue practicando y nos vemos en la siguiente lección!

© Copyright 2024. Todos los derechos reservados