Saltar al contenido principal
Curso/Proyecto Final/Diseno de API Tipada
Volver a Proyecto Final

Proyecto Final — Leccion 1

·25 min

Diseno de API Tipada

Diseña una API completa con tipos seguros.

Diseno de una API Tipada

Vamos a diseñar una API de gestión de tareas con tipos completos.

Definir tipos base

typescript
interface BaseEntity {
  id: string;
  createdAt: Date;
  updatedAt: Date;
}

interface Tarea extends BaseEntity {
  titulo: string;
  descripcion: string;
  completada: boolean;
  prioridad: "baja" | "media" | "alta";
  etiquetas: string[];
}

type CrearTarea = Omit<Tarea, keyof BaseEntity>;
type ActualizarTarea = Partial<CrearTarea>;

Resultado tipado

typescript
type Resultado<T> =
  | { exito: true; datos: T }
  | { exito: false; error: string };

Servicio tipado

typescript
class TareaService {
  private tareas: Map<string, Tarea> = new Map();

  crear(datos: CrearTarea): Resultado<Tarea> {
    const tarea: Tarea = {
      ...datos,
      id: crypto.randomUUID(),
      createdAt: new Date(),
      updatedAt: new Date(),
    };
    this.tareas.set(tarea.id, tarea);
    return { exito: true, datos: tarea };
  }

  obtener(id: string): Resultado<Tarea> {
    const tarea = this.tareas.get(id);
    if (!tarea) return { exito: false, error: "Tarea no encontrada" };
    return { exito: true, datos: tarea };
  }
}

Ejercicio pratico

Crea un tipo Resultado<T> y una función crearTarea que retorne Resultado.

exercise.ts
Loading...
Resultado

Haz clic en "Ejecutar" para ver el resultado...

Curso de TypeScript — Aprende desde cero