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.tspara 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
- Sem 'any': O uso de
anyé estritamente proibido. Useunknownse o tipo for realmente incerto. - Opcionalidade: Use
?apenas para campos que realmente podem ser nulos ou indefinidos na fonte de dados. - Exportação: Sempre exporte os tipos individualmente para facilitar a importação.
- 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.