Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.
Este módulo nos va a permitir verificar si los datos obtenidos de una API son correctos en el momento de su recepción. Si no validamos los datos recibidos de una API en el momento de su recepción es ponsible que obtengamos un error en el código más adelante, al intentar acceder a una propiedad etc. Para evitar estas situaciones, lo más rápido es validar la recepción de los datos para que si alguno no viene correctamente tener un error en ese preciso momento.
Validación cuando los datos de entrada y los que vamos a utilizar en nuestra aplicación coinciden
type Task = {
id: string;
order: number;
isDone?: boolean;
text: string;
}
// Podemos generar cómodamente el siguiente schema en este enlace:
// https://transform.tools/typescript-to-zod
const taskSchema = z.object({
id: z.string(),
order: z.number(),
isDone: z.boolean().optional(),
text: z.string()
})
export const getTasks = async (userId: string): Promise<Task[]> => {
const inputTasks = ...
const tasks = inputTasks.map(taskSchema.parse);
return tasks
}
Validación y conversión de los datos que llegan en los datos con los que vamos a trabajar
Nuestro taskSchema quedaría así:
const taskSchema = z.object({
id: z.number(),
user_id: z.number(),
date_type: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3)]),
each_days: z.number().nullable(),
execution_date: z.string(),
txt: z.string(),
bought: z.union([z.literal(0), z.literal(1)]),
}).transform(data => ({
id: data.id,
user_id: data.user_id,
date_type: data.date_type,
each_days: data.each_days,
execution_date: new Date(data.execution_date),
txt: data.txt,
bought: data.bought === 1
}));