Lección 78 — Funciones Tipadas
🧠 Concepto
Section titled “🧠 Concepto”En TypeScript, las funciones pueden (y deben) especificar los tipos de sus parámetros y su valor de retorno. Esto convierte a las funciones en contratos predecibles.
Sintaxis básica
Section titled “Sintaxis básica”function sumar(a: number, b: number): number { return a + b;}a: number— parámetro con tipob: number— parámetro con tipo: number— tipo de retorno
Tipo de retorno void
Section titled “Tipo de retorno void”Si la función no retorna nada, usa void:
function log(mensaje: string): void { console.log(mensaje); // No hay return}Parámetros opcionales
Section titled “Parámetros opcionales”Un parámetro puede ser opcional con ?:
function saludar(nombre: string, saludo?: string): string { return `${saludo ?? 'Hola'}, ${nombre}`;}Parámetros por defecto
Section titled “Parámetros por defecto”Los valores por defecto también funcionan:
function saludar(nombre: string, saludo: string = 'Hola'): string { return `${saludo}, ${nombre}`;}Funciones como tipo
Section titled “Funciones como tipo”Puedes declarar el tipo de una función sin implementarla:
type Operacion = (a: number, b: number) => number;
let sumar: Operacion = (x, y) => x + y;let multiplicar: Operacion = (x, y) => x * y;💻 Ejemplo
Section titled “💻 Ejemplo”// Función básica tipadafunction calcularDescuento(precio: number, porcentaje: number): number { return precio - (precio * porcentaje / 100);}
console.log(calcularDescuento(100, 10)); // → 90
// Función que no retornafunction mostrarProducto(nombre: string, precio: number): void { console.log(`${nombre}: $${precio.toFixed(2)}`);}
// Función como tipotype Transformador = (valor: string) => string;
const aMayusculas: Transformador = (texto) => texto.toUpperCase();const aMinusculas: Transformador = (texto) => texto.toLowerCase();
// Función que recibe un callbackfunction procesar(texto: string, fn: (t: string) => string): string { return fn(texto);}
console.log(procesar('Hola', aMayusculas)); // → 'HOLA'📝 Ejercicio
Section titled “📝 Ejercicio”Escribe una función filtrar que reciba un array de números y una función de criterio (numero: number) => boolean. La función debe retornar un nuevo array con los números que cumplen el criterio. Pruébala filtrando números pares y números mayores a 10.
⚠️ Nota
Section titled “⚠️ Nota”Si omites el tipo de retorno, TS lo infiere automáticamente. Es buena práctica anotarlo explícitamente en funciones públicas o complejas para garantizar que el retorno es el esperado.
Usa arrow functions con tipos para escribir callbacks más limpios. El tipo de los parámetros se puede inferir del contexto cuando la función se asigna a una variable tipada o se pasa como argumento.