Funciones tipadas + inferencia: el combo ganador
Funciones tipadas e inferencia: el combo ganador
Tipar funciones es donde TypeScript paga la mayor parte de su valor: entradas claras, salidas claras y errores que aparecen mientras escribes, no en producción. La buena noticia es que casi nunca necesitas anotar el tipo de retorno: TypeScript lo infiere a partir del cuerpo.
Parámetros y retornos
Anota siempre los parámetros, porque TypeScript no puede adivinarlos. El retorno suele inferirse, aunque conviene anotarlo en funciones públicas o exportadas para fijar el contrato.
type Plan = "free" | "pro";
// Retorno inferido como number
function precio(plan: Plan) {
return plan === "free" ? 0 : 12;
}
// Retorno anotado para fijar el contrato público
export function formatearPrecio(valor: number): string {
return `$${valor.toFixed(2)}`;
}Funciones asíncronas y Promise<T>
Toda función async devuelve una Promise. El tipo entre los signos <> es lo que resuelve la promesa cuando esperas con await.
async function buscarUsuario(id: string): Promise<{ id: string; nombre: string }> {
// imagina una consulta a la base de datos
return { id, nombre: "María" };
}
const usuario = await buscarUsuario("u_1"); // usuario: { id, nombre }Atención
Si una función puede no devolver valor, modela el caso explícitamente con T | null en lugar de devolver undefined sin avisar. Así el compilador obliga a quien la llama a manejar el caso vacío.
Una función async que hace return 5, ¿qué tipo devuelve?
async envuelve su retorno en una Promise. Devolver 5 dentro de una async produce Promise<number>.Ejercicio práctico
Objetivo: tipar funciones síncronas y asíncronas con casos límite.
- Escribe
parsearPrecio(input: string): number | nullque convierta el texto a número o devuelvanullsi no es válido. - Llama a la función y maneja el caso
nullantes de usar el resultado. - Escribe una función
asyncque devuelva una lista de tres items con tipo explícito. - Usa
awaitpara obtener la lista y recórrela.
Entregable: el archivo con ambas funciones y una pequeña prueba que demuestre el manejo del caso null.
Para recordar
- Anota los parámetros siempre; el retorno casi siempre se infiere.
- Toda función
asyncdevuelvePromise<T>. - Modela la ausencia de valor con
T | nullpara forzar su manejo.
Aplicación práctica en un caso real
Aplicar Funciones tipadas + inferencia: el combo ganador dentro del contexto de TypeScript Completo con criterio práctico, evitando quedarse en una definición aislada. Para que esta lección sea útil, imagina un escenario concreto: tienes que usar este tema para mejorar un proceso, tomar una decisión, crear un entregable o explicar una recomendación a otra persona. La pregunta no es solo “qué significa”, sino “qué haría diferente después de entenderlo”.
Un buen uso empieza por delimitar el problema. Define qué resultado quieres lograr, qué información tienes disponible, qué restricciones existen y cómo sabrás si la decisión fue correcta. Esta forma de pensar evita respuestas genéricas y convierte el aprendizaje en una herramienta de trabajo.
Marco de decisión
Antes de avanzar, revisa tres niveles: primero, el objetivo operativo; segundo, los recursos disponibles; tercero, el riesgo de equivocarte. En TypeScript Completo, muchas decisiones fallan porque se copia una táctica sin entender el contexto. El marco correcto te obliga a adaptar, no solo repetir.
- Objetivo: qué resultado medible o visible quieres conseguir.
- Contexto: quién usará esto, con qué nivel de experiencia y bajo qué restricciones.
- Acción: cuál es el siguiente paso mínimo que puedes ejecutar hoy.
- Señal: qué evidencia vas a observar para decidir si funcionó.
Ejemplo guiado
Supón que debes implementar esta idea en una pequeña empresa o proyecto personal. En vez de intentar una versión perfecta, prepara una versión mínima: una plantilla, una prueba, una lista de control, una automatización simple, una página, un mensaje o una medición inicial. Luego pide feedback o compara el resultado contra una métrica.
Si el resultado mejora, documenta el proceso. Si no mejora, identifica si falló la hipótesis, la ejecución o la medición. Esta distinción es clave: muchas personas abandonan una buena idea por una mala primera ejecución, o escalan una mala idea porque miraron la métrica equivocada.
Errores frecuentes
- Confundir actividad con avance: hacer muchas tareas sin saber qué resultado persiguen.
- Copiar ejemplos sin adaptarlos al cliente, audiencia, equipo o nivel técnico real.
- No dejar evidencia: si no registras decisiones y resultados, no aprendes del proceso.
- Querer automatizar o escalar antes de validar que el enfoque básico funciona.
Ejercicio práctico
- Escribe el objetivo de esta lección en una frase aplicada a tu caso.
- Define un entregable pequeño que puedas crear en menos de una hora.
- Lista tres criterios para evaluar si ese entregable está bien hecho.
- Ejecuta una versión inicial y anota qué cambiarías en una segunda iteración.
Checklist de salida
- Puedo explicar el concepto con mis propias palabras.
- Tengo un ejemplo aplicado, no solo una definición.
- Sé qué error debo evitar primero.
- Tengo una acción concreta para practicar esta semana.