Como Criar Interfaces e Tipos Personalizados no TypeScript

18/09/2024

O Que São Interfaces?

Interfaces no TypeScript são usadas para definir a estrutura de um objeto. Elas garantem que o objeto siga uma determinada forma, incluindo tipos e propriedades específicas. Por exemplo, se você está lidando com um objeto de usuário, pode usar uma interface para garantir que todos os usuários tenham as mesmas propriedades.

Exemplo de uma interface:

        
        interface Usuario {
            nome: string;
            idade: number;
            email: string;
        }
        
    

Agora, ao usar essa interface, qualquer objeto do tipo Usuario deverá ter essas três propriedades:

        
        const usuario: Usuario = {
            nome: "João",
            idade: 30,
            email: "joao@example.com"
        };
        
    

O Que São Tipos Personalizados?

Assim como as interfaces, os tipos personalizados permitem definir a estrutura de variáveis e objetos no TypeScript. No entanto, enquanto as interfaces são focadas em objetos, os tipos podem ser mais flexíveis, permitindo definir combinações de diferentes tipos ou restringir valores permitidos.

Exemplo de tipo personalizado:

        
        type EstadoCivil = "solteiro" | "casado" | "divorciado";

        const estado: EstadoCivil = "casado";
        
    

Isso restringe os valores possíveis de EstadoCivil às opções especificadas. Qualquer valor fora desses resultará em um erro.

Diferenças Entre Interfaces e Tipos

A principal diferença entre interfaces e tipos no TypeScript é que as interfaces são voltadas para definir objetos, enquanto os tipos permitem mais flexibilidade, podendo definir tipos primitivos, uniões de tipos, e mais. No entanto, ambos podem ser utilizados para objetos, e em muitos casos, a escolha entre um ou outro depende do estilo de código.

Além disso, interfaces permitem a "herança" múltipla, enquanto os tipos não suportam essa funcionalidade de forma direta. Veja um exemplo:

        
        interface Endereco {
            rua: string;
            cidade: string;
        }

        interface UsuarioComEndereco extends Usuario, Endereco {}
        
        const usuarioCompleto: UsuarioComEndereco = {
            nome: "João",
            idade: 30,
            email: "joao@example.com",
            rua: "Rua A",
            cidade: "Cidade B"
        };
        
    

Quando Usar Interfaces e Quando Usar Tipos?

Use interfaces quando estiver lidando com objetos ou quando precisar de herança de várias interfaces. Use tipos quando quiser mais flexibilidade ou quando estiver lidando com uniões de tipos, como no caso de valores permitidos. Em muitos casos, ambos podem ser intercambiáveis, então a escolha depende do seu estilo de programação.

Conclusão

Interfaces e tipos personalizados no TypeScript são ferramentas poderosas que ajudam a manter o código seguro, organizado e fácil de manter. Com eles, você garante que objetos e variáveis sigam estruturas consistentes, tornando seu código mais previsível e menos propenso a erros. Experimente usar ambos em seu próximo projeto e veja como eles podem melhorar a qualidade do seu código TypeScript.