Saltar al contenido principal
eLearner.app
Módulo 3 · Lección 1 de 25/14 en el curso~12 min
Lecciones del módulo (1/2)

Funciones tipadas

Las funciones son los bloques fundamentales de cualquier aplicación JavaScript. En TypeScript, podemos anotar con precisión tanto los argumentos de entrada como los valores de retorno, haciendo que nuestras interfaces y llamadas a funciones sean extremadamente seguras y autodocumentadas.


Parámetros Opcionales y por Defecto

En JavaScript, cada parámetro es opcional y, si no se pasa, toma el valor undefined. En TypeScript, por defecto, cada parámetro declarado es obligatorio.

Sin embargo, podemos definir parámetros opcionales usando el signo de interrogación (?), o especificar valores por defecto directamente en la firma.

1. Parámetros Opcionales

Los parámetros opcionales deben colocarse después de los parámetros obligatorios:

TS
function greetUser(name: string, title?: string): string {
  if (title) {
    return `Buongiorno ${title} ${name}`;
  }
  return `Ciao ${name}`;
}

2. Parámetros por Defecto

Si no se proporciona un valor para un parámetro con valor por defecto, TypeScript infiere su tipo y asigna el valor establecido:

TS
function greetUserWithDefault(name: string, prefix: string = 'Ciao'): string {
  return `${prefix} ${name}`;
}

Parámetros Rest (...args)

Cuando queremos aceptar un número variable de argumentos, podemos usar el operador rest. En TypeScript, estos parámetros deben estar tipados como un array:

TS
function sumAll(message: string, ...numbers: number[]): string {
  const total = numbers.reduce((sum, n) => sum + n, 0);
  return `${message} ${total}`;
}

Firmas de Funciones (Function Types)

Podemos definir el tipo de una función de forma independiente para luego reutilizarlo en la declaración de variables o callbacks:

TS
// Definizione del tipo tramite alias
type MathOperation = (a: number, b: number) => number;

const add: MathOperation = (x, y) => x + y;
const multiply: MathOperation = (x, y) => x * y;

Este enfoque es fundamental cuando se pasan funciones como argumentos a otras funciones (callbacks).


Pruébalo tú

Ejercicio 1: Parámetros Opcionales

Ejercicio#ts.m3.l1.e1
Intentos: 0Cargando...

Crea una función llamada formatName que acepte un parámetro firstName (cadena) y un parámetro opcional lastName (cadena). Si se proporciona lastName, devuelve 'firstName lastName'; de lo contrario, devuelve solo 'firstName'.

Cargando editor...
Mostrar pista

Recuerda que el parámetro opcional se declara con lastName?: string después del obligatorio.

Solución disponible después de 3 intentos

Ejercicio 2: Parámetros por Defecto

Ejercicio#ts.m3.l1.e2
Intentos: 0Cargando...

Crea una función llamada power que acepte una base (número) y un exponent (número con valor por defecto igual a 2). La función debe calcular y devolver el valor de la base elevado al exponente (usa Math.pow).

Cargando editor...
Mostrar pista

Usa base: number y exponent: number = 2 dentro de la firma de la función.

Solución disponible después de 3 intentos

Ejercicio 3: Firma de la Función

Ejercicio#ts.m3.l1.e3
Intentos: 0Cargando...

Define un alias de tipo llamado BinaryOp que describa una función que acepte dos parámetros de tipo número y devuelva un número. Luego declara una constante llamada sum de tipo BinaryOp que implemente la suma.

Cargando editor...
Mostrar pista

La sintaxis para el tipo de función es (a: number, b: number) => number.

Solución disponible después de 3 intentos

Ejercicio 4: Función Callback

Ejercicio#ts.m3.l1.e4
Intentos: 0Cargando...

Crea una función llamada processItems que acepte dos parámetros: items (un array de cadenas) y callback (una función que acepte una sola cadena y no devuelva nada, es decir, void). La función debe ejecutar un bucle for...of sobre cada elemento de items y pasarlo a la callback.

Cargando editor...
Mostrar pista

Declara la firma como processItems(items: string[], callback: (item: string) => void): void y usa un bucle para llamar a la callback.

Solución disponible después de 3 intentos