Skip to content

Padrão de Types

Os Types e Interfaces são essenciais para garantir a segurança e a consistência dos dados em toda a aplicação.

Estrutura do Arquivo

  • Local: src/types/
  • Nomenclatura: kebab-case (ex: user-profile.ts, calculation-result.ts)
  • Extensão: .ts (não usar .d.ts para definições de domínio)

Diretrizes de Definição

1. Interfaces vs Types

  • Use Interfaces para definir a estrutura de objetos de domínio e props de componentes (permite extensibilidade).
  • Use Types para uniões, interseções, tipos primitivos ou tuplas.
typescript
// src/types/user.ts

export interface User {
    id: string;
    firstName: string;
    lastName: string;
    email: string;
    birthDate: string;
    gender: "masculine" | "feminine" | "other" | "prefer-not-to-inform";
    profileType: "student" | "professional" | "company" | "hobby";
    location: {
        country: string;
        state?: string;
        city?: string;
    };
    phone: string;
    isPremium: boolean;
}

2. Modelos de Domínio Sugeridos

  • user.ts: Dados fundamentais do usuário.
  • feed.ts: Estrutura de postagens e interações da rede social.
  • profile.ts: Detalhes estendidos do perfil profissional.
  • token.ts: Estrutura de tokens de autenticação (access/refresh).
  • piece.ts: Definições das peças de caldeiraria e seus parâmetros.

3. Boas Práticas

  1. Sem 'any': O uso de any é estritamente proibido. Use unknown se o tipo for realmente incerto.
  2. Opcionalidade: Use ? apenas para campos que realmente podem ser nulos ou indefinidos na fonte de dados.
  3. Exportação: Sempre exporte os tipos individualmente para facilitar a importação.
  4. Centralização: Se um tipo é usado em mais de um lugar na aplicação, ele DEVE estar em src/types/. Tipos locais e exclusivos de um componente podem ficar no arquivo do componente.