Introdução

Sempre gostei do TypeScript, especialmente no backend, usando NestJS. No entanto, a necessidade de validações separadas para garantir que os dados correspondam aos tipos declarados sempre me incomodou. Foi com esse problema em mente que comecei o projeto TS Typed.

Adicionando Validação de Tipos em Tempo de Execução ao TypeScript com TS Typed

O Problema

Quando desenvolvo aplicações backend, utilizo NestJS e costumo usar class-validator, class-transformer e ValidationPipe para validação de DTOs. No entanto, a tipagem do TypeScript e as regras dos decorators podem entrar em conflito. Por exemplo, um DTO pode esperar um número, mas o decorator está validando uma string.

TS Typed: Uma Solução

TS Typed é uma biblioteca open source que adiciona validação de tipos em tempo de execução a projetos TypeScript, incluindo aplicações NestJS. A ideia é usar os próprios tipos do TypeScript para gerar validações em runtime, sem duplicar definições em schemas ou decorators. Isso permite que a biblioteca lance um StrictTypeError caso um valor não corresponda ao tipo esperado.

Exemplo Prático com NestJS

Com TS Typed, um DTO de cadastro de usuário pode ficar assim: import { CPF, Email, FullName } from '@ts-typed/validators'; import { TypeErrorResponse } from '@ts-typed/nestjs'; export class CreateUserDto { fullName!: FullName; @TypeErrorResponse('CPF inválido') cpf!: CPF; email!: Email; age!: number; }

Conclusão

TS Typed é uma solução promissora para a validação de tipos em tempo de execução no TypeScript, especialmente para aplicações NestJS. Embora ainda em fase alpha, já apresenta funcionalidades promissoras para facilitar o desenvolvimento de aplicações. Boas práticas operacionais incluem testar e avaliar o projeto antes de sua implementação em produção.

TempoTiposTypedTypescriptValidacao