Volver a Proyecto Final
Proyecto Final — Leccion 1
·25 minDiseno 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...