Instructora
Lucía Fernández es Facilitadora de comunicación profesional con base en Montevideo, Uruguay. Su trabajo se enfoca en transformar temas complejos en rutas de aprendizaje claras, prácticas y fáciles de seguir.
Ha acompañado a estudiantes, profesionales y equipos de empresas en procesos de formación online, combinando teoría útil con ejercicios aplicables desde la primera clase.
En Cursalo diseña experiencias de aprendizaje con ejemplos reales, lenguaje directo y una estructura pensada para avanzar paso a paso sin perder contexto.
Este curso incluye 4 modulos, 13 lecciones y 3:26 horas de materiales.
Configurar TypeScript Vas a configurar TypeScript, entender tsconfig y el flujo de compilacion. Objetivo: saber que se compila, cuando y por que. Conceptos clave tsconfig.json: target, module, strict Diferencia entre type-check y build tsc vs tsx (dev) y scripts Ejemplo pnpm add -D typescript tsx npx tsc --init # type-check npx tsc --noEmit # correr TS en dev pnpm tsx src/index.ts Ejercicio Crea un proyecto minimo con tsconfig en modo strict. Escribe 1 archivo TS con un error intencional y corre
Tipos primitivos, arrays y objetos sin dolor Con un puñado de tipos cubres la mayoría del código que vas a escribir: string, number, boolean, arrays y objetos. La clave no es memorizar sintaxis, sino entender cuándo escribir el tipo y cuándo dejar que TypeScript lo deduzca por ti (eso se llama inferencia). Deja que la inferencia trabaje Si inicializas una variable con un valor, no necesitas anotar su tipo: TypeScript ya lo sabe. Anotar de más genera ruido. Anota tipos donde el valor todavía no e
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 export
Tipo de lección: QuizQuiz de TypeScriptPon a prueba tus conocimientos con este quiz. Necesitas 70% para aprobar.
Unions y narrowing Aprende a modelar estados (loading/success/error) con unions y a usar narrowing para que el compilador te ayude. Conceptos clave Discriminated unions Type guards (in, typeof, custom) Exhaustive checks Ejemplo type Result<T> = | { ok: true; data: T } | { ok: false; error: string }; function parseId(input: string): Result<string> { if (!input.startsWith('u_')) return { ok: false, error: 'invalid id' }; return { ok: true, data: input }; } const r = parseId('u_123'); i
Interfaces vs Types No es religion. Aprende una regla simple para no perder tiempo: usa lo que haga el modelado mas claro. Conceptos clave interface para objetos y extensiones type para unions y composicion Intersecciones y picks/omits Ejemplo interface User { id: string; name: string; } type UserWithPlan = User & { plan: 'free' | 'pro' }; type PublicUser = Pick<User, 'id' | 'name'>; Ejercicio Modela Order con items y total. Crea un tipo PublicOrder que oculte campos internos. Checklis
Generics Generics te permiten reutilizar tipos sin perder seguridad. Aprende 3 patrones que aparecen todo el tiempo. Conceptos clave Generic functions <T> Constraints: <T extends ...> Generics para colecciones y helpers Ejemplo function first<T>(items: T[]): T | null { return items.length ? items[0] : null; } type WithId = { id: string }; function byId<T extends WithId>(items: T[], id: string): T | null { return items.find((i) => i.id === id) ?? null; } Ejercicio Escri
Validacion con Zod Los tipos no validan en runtime. Zod te da schemas para validar inputs (API/forms) y tipos derivados para TS. Conceptos clave Schema -> parse/safeParse Inferir tipos: z.infer Errores claros para el cliente Ejemplo import { z } from 'zod'; const SignupSchema = z.object({ email: z.string().email(), password: z.string().min(8), }); type SignupInput = z.infer<typeof SignupSchema>; const parsed = SignupSchema.safeParse({ email: '[email protected]', password: '12345678' }); if (!pars
Errores tipados En vez de exceptions al aire, usa Result<T> o errores discriminados para manejar fallos con claridad. Conceptos clave Errores esperables vs inesperados Mensajes para usuarios vs logs Mapear errores a HTTP status Ejemplo type Err = { code: 'NOT_FOUND' | 'VALIDATION'; message: string }; type Result<T> = { ok: true; data: T } | { ok: false; error: Err }; function getCourse(slug: string): Result<{ slug: string }> { if (!slug) return { ok: false, error: { code: 'VALI
APIs tipadas Arma un endpoint real: valida input, tipa output y maneja errores sin duplicar logica. Conceptos clave Request validation (body/query) Response shape estable Separar controller vs service Ejemplo import express from 'express'; import { z } from 'zod'; const app = express(); app.use(express.json()); const Body = z.object({ title: z.string().min(3) }); app.post('/courses', (req, res) => { const parsed = Body.safeParse(req.body); if (!parsed.success) return res.status(400).json({ ok
Modelar tareas Vas a modelar una app de tareas con estados (todo/doing/done) usando unions y tipos claros. Conceptos clave Estados como union IDs y fechas Separar input vs output Ejemplo type TaskStatus = 'todo' | 'doing' | 'done'; type Task = { id: string; title: string; status: TaskStatus; createdAt: string; }; Ejercicio Crea 3 tareas y escribe una funcion moveTask(task, status). Haz que TypeScript impida estados invalidos. Checklist de mastery Los estados estan tipados. No hay strings magicos
Endpoints: crear, listar, actualizar estado Esta leccion pertenece al curso TypeScript Completo y esta pensada para que avances con criterio profesional, no solo con teoria. Primero entiende el concepto, despues aplicalo en una situacion concreta y finalmente deja evidencia de lo que aprendiste. Objetivo practico Al terminar, deberias poder explicar el tema con tus palabras, reconocer cuando usarlo y construir una version simple que sirva como base para un proyecto real. Pasos recomendados Lee e
Refactor con seguridad Agrega un campo (priority) y refactoriza. Si tus tipos estan bien, el compilador te marca todo lo que falta. Conceptos clave Cambios controlados por el compilador Refactor: renombres y migraciones simples Type-check como red de seguridad Ejemplo type Priority = 'low' | 'medium' | 'high'; type Task = { id: string; title: string; status: TaskStatus; priority: Priority; createdAt: string; }; Ejercicio Agrega priority al schema de Zod y a tus handlers. Corre tsc --noEmit para
Data Analyst at Microsoft
Responder al comentario