Pular para o conteúdo

Garantindo segurança em tempo de execução quando tipos TypeScript não podem ser usados

O TypeScript é uma excelente ferramenta para garantir segurança de tipos em tempo de desenvolvimento, mas esses tipos são removidos durante a compilação para JavaScript. Isso significa que, em tempo de execução, o TypeScript não oferece nenhuma garantia sobre a estrutura dos dados. É aqui que o Zod entra em cena, fornecendo validação em tempo real para garantir que os dados estão corretos enquanto sua aplicação está sendo executada.

O Zod oferece uma maneira de garantir a integridade dos dados em situações onde a tipagem estática do TypeScript não pode atuar, como no caso de dados vindos de APIs, formulários ou outras fontes externas. Usando o Zod, você valida os dados em tempo de execução e garante que eles seguem os tipos e formatos esperados.

Exemplo 1: Validando dados de uma API externa

Vamos supor que estamos buscando dados de uma API externa. O TypeScript sozinho não pode garantir que os dados recebidos estão no formato correto.

import { z } from 'zod';
const externalDataSchema = z.object({
id: z.number(),
title: z.string(),
completed: z.boolean(),
});
async function fetchExternalData() {
const response = await fetch('https://jsonplaceholder.typicode.com/todos/1');
const data = await response.json();
try {
// Validando os dados recebidos da API em tempo de execução
const validatedData = externalDataSchema.parse(data);
console.log('Dados validados:', validatedData);
} catch (err) {
console.error('Erro de validação:', err.errors);
}
}
fetchExternalData();

Explicação

  • Validação em tempo de execução: Mesmo que o TypeScript tipifique data como um objeto, só o Zod pode garantir que os dados realmente correspondem à estrutura esperada no momento em que são recebidos. Se a API enviar dados inesperados, a validação falha e podemos lidar com isso imediatamente.
  • Segurança: Esse nível de verificação adiciona uma camada de segurança contra dados malformados que podem causar erros no sistema, garantindo a integridade dos dados processados pela aplicação.