Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Quando trabalhamos com TypeScript, garantir que certos valores estejam restritos a tipos específicos pode evitar muitos bugs em runtime. Um exemplo clássico é validar que um método de requisição HTTP seja um dos valores esperados do Axios, como 'get', 'post', etc.
No artigo de referência, eles usam Zod para criar um schema que valida se o valor de um métoo está dentro do tipo definido pelo Axios. A ideia é usar o TypeScript para definir os tipos, mas também fazer uma validação em runtime, o que aumenta a segurança do código. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Para isso, podemos usar a função zod.enum ou zod.literal para listar as opções possíveis. Assim, o schema fica explícito e fácil de manter.
import { z } from 'zod'. import { Method } from 'axios'. const methodSchema = z.enum(['get', 'POST', 'delete', 'HEAD', 'put', 'patch']). // Exemplo de validação
const validaMetodo = (method: any) => {
return methodSchema.safeParse(method). }.
Dessa forma, qualquer valor que não esteja na lista será rejeitado, mesmo que o compilador TypeScript permita passar qualquer string. Isso ajuda a evitar bugs difíceis de rastrear, principalmente em integrações onde a API pode receber valores inesperados. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
Vocês usam alguma estratégia parecida para garantir a integridade de tipos que vêm de fontes externas? Ou preferem confiar apenas no tipo do TypeScript mesmo? Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Concordo, André. No meu time, sempre reforçamos a validação com schemas, assim evitamos erros que podem passar despercebidos na tipagem. Ainda mais com APIs que mudam de versão às vezes.
Boa, essa abordagem de vaildar em runtime é essencial em sistemas que dependem de input externo. Já passei por situações onde só confiar no tipo do TS virou problema, principalmente em integrações com APIs de terceiros.
Uai, mas tem que tomar cuidado com o tamnho do schema, né?
No frontend, até que uso bastante essa validação, mas em UI prefiro deixar o usuário escolher um método por dropdown. Assim, a validação fica mais tranquila e o erro do usuário também.