TypeScript Completo es un curso online de Cursalo en español para aprender con una ruta estructurada de módulos, lecciones y práctica. La página reúne el objetivo del curso, instructor, duración, contenido, preguntas frecuentes y opción de inscripción, para que estudiantes y motores de respuesta puedan entender rápidamente qué se aprende, para quién sirve y cómo empezar.
TypeScript Completo
Instructora
Acerca de este curso
Este curso de TypeScript Completo fue reforzado para funcionar como una ruta de aprendizaje seria, no como una colección de apuntes cortos. La idea es que el estudiante entienda los conceptos centrales, pero también sepa cuándo aplicarlos, qué errores evitar y cómo convertirlos en decisiones concretas.
A lo largo de los módulos se trabaja con explicaciones claras, ejemplos, criterios prácticos, ejercicios y checklists. El enfoque prioriza aprendizaje útil: menos teoría decorativa y más pasos que una persona pueda llevar a su trabajo, emprendimiento, estudio o proyecto digital.
La guía de Rafael Ortega acompaña el recorrido con una mirada aplicada: definir objetivos, practicar con entregables pequeños, revisar resultados y mejorar. Al final, el estudiante debería tener una base ordenada, vocabulario claro y un plan realista para seguir avanzando sin depender de recetas mágicas.
Rafael Ortega
Resumen del temario
Este curso incluye 4 modulos, 13 lecciones y 5:25 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
Lección práctica para aplicar Quiz: Fundamentos de TypeScript dentro de TypeScript Completo, con criterios de decisión, ejemplo guiado, ejercicio y checklist de salida.
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
Responder al comentario