TypeScript: quando utilizar Alias ou Interface?

Uma dúvida frequente na área do desenvolvimento é quando utilizar cada função? Sendo as duas similares e, muitas vezes, intercambiáveis. As linguagens de programação fornecem diversas ferramentas para solucionarmos os problemas e, frequentemente, surgem dúvidas sobre em qual situação cada uma deve ser utilizada para melhor atender às necessidades. Como é o caso do TypeScript.

[adrotate banner=”4″]

Existem várias formas de definir os tipos dos dados usados pela aplicação, bem como formas de definir tipos personalizados, como o Alias e a Interface, famosos por causarem essa confusão. Portanto, vamos entender como cada um funciona e quais suas diferenças?

Alias: maneira de definir tipos personalizados

Como já mencionado, com o TypeScript, é possível definir o tipo do dado, como:

  • Primitivo (boolean, number, null, string ou undefined);
  • Complexos (array ou objeto);
  • Função ou any (o dado assume qualquer tipo, por inferência).

Porém, não seria interessante poder definir tipos personalizados para dados específicos da aplicação?

É aí que entra o Alias: uma sintaxe do TypeScript para definir um tipo personalizado, com a estrutura que se deseja, para melhor adequar a tipagem à necessidade da aplicação.

Sua sintaxe é simples, bastando utilizar a keyword “type”, seguida do nome personalizado e atribuir a ele os tipos de dados da linguagem. Por exemplo:

TypeScript: quando utilizar Alias ou Interface? Luby Software
Representação do uso do Alias.

No entanto, não estamos obtendo o mesmo resultado que teríamos ao tipar diretamente o dado, sem criar um Alias? Sim, mas é aí que entra a utilidade do Alias: poder criar Unions ou Intersections.

Unions

Union significa união, e essa é a sintaxe que possibilita unir vários Alias em um só. Dessa forma, ele pode assumir vários tipos diferentes, ou ambos, com o uso do pipe “|”. Por exemplo, a variável myStringOrNumber poderá ser tanto uma string quanto um number:

TypeScript: quando utilizar Alias ou Interface? Luby Software
Representação de um Union Type.

Caso definam objetos, a Union permite que o dado implemente as propriedades de um dos tipos ou de ambos:

TypeScript: quando utilizar Alias ou Interface? Luby Software
Representação da implementação de um Union Type com Objetos.

Assim, o objeto pode assumir as seguintes formas:

TypeScript: quando utilizar Alias ou Interface? Luby Software
Representação da implementação de um Union Type com Objetos.

Intersection

Por sua vez, a Intersection permite combinar Alias diferentes em um só, com as características de ambos, com o uso do “&”. Por exemplo, usando os Alias do último exemplo, podemos combiná-los em um só:

TypeScript: quando utilizar Alias ou Interface? Luby Software
Representação de uma Intersection.

Com isso, IntersectionAlias se torna uma combinação de ambos os tipos referenciados.

Interface

A Interface é uma sintaxe do TypeScript que define as especificações de uma entidade. Ou seja, define o contrato, a estrutura de uma Classe, Objeto ou Função.

Uma Interface é definida usando a keyword “interface”, seguida do nome e das especificações. Por exemplo:

TypeScript: quando utilizar Alias ou Interface? Luby Software
Representação de uma Interface.

No caso da Função, declaram-se os parâmetros e o tipo do retorno:

TypeScript: quando utilizar Alias ou Interface? Luby Software
Representação de uma Interface que define uma Função.

Declaration Merging

Diferentemente do Alias, uma Interface pode ser declarada mais de uma vez, o que fará com que todas as declarações sejam mescladas numa só:

TypeScript: quando utilizar Alias ou Interface? Luby Software
Representação do Declaration Merging de uma Interface.

A Interface ICar passa a ser composta pelas entidades das duas declarações. Isso porque o TypeScript mescla todas as declarações de uma mesma Interface.

Extends

Tanto o Alias quanto a Interface podem ampliar outros, de forma que devem implementar os membros do Alias ou Interface ampliado e os próprios.

No caso do Alias, a extensão é feita usando o “&” para criar uma Intersection:

TypeScript: quando utilizar Alias ou Interface? Luby Software
Representação de um Alias que estende outro.

Além disso, podemos estender uma Interface, com a mesma sintaxe:

TypeScript: quando utilizar Alias ou Interface? Luby Software
Representação de um Alias que estende uma Interface.

Por sua vez, a Interface utiliza a keyword “extends” para estender um Alias ou Interface:

TypeScript: quando utilizar Alias ou Interface? Luby Software
Representação de uma Interface que estende um Alias.

Implements

O TypeScript permite que Classes implementem Aliases ou Interfaces, com o uso da keyword “implements”:

TypeScript: quando utilizar Alias ou Interface? Luby Software
Representação de Classes que implementam uma Interface ou Alias.

TypeScript Alias x Interface: qual a diferença, afinal?

Ante todo o exposto neste artigo, percebemos que as duas ferramentas são similares, e até intercambiáveis.

Porém, fica claro que cada uma possui características que as tornam mais específicas para determinadas situações.

No caso da Interface, ela é mais limitada, pois apenas define a estrutura de uma Classe, Objeto ou Função. Entretanto, isso a torna melhor nesse caso de uso, qual seja, definir as entidades desses tipos complexos.

O Alias, por sua vez, possui uma abrangência maior, pois permite a definição de tipos personalizados a partir dos primitivos e complexos. Assim, possibilita atender às diferentes situações que uma aplicação pode ter para seus dados.

Dessa forma, conclui-se que a Interface deve ser utilizada quando se quer tipar uma Classe, Objeto ou Função, pois seu uso é destinado especificamente para isso. Já o Alias serve para todas as demais situações em que se quer definir tipos para um dado da aplicação, que não seriam abrangidos pelos fornecidos pelo TypeScript.

Leia também:

Abstração orientada ao objeto

Biblioteca de conceitos de desenvolvimento

Autor: Gustavo França Albano de Paula.

[adrotate banner=”5″]

Rodrigo Gardin

Rodrigo Gardin

CTO da Luby

Gostou do conteúdo? Compartilhe

Últimos posts

Fique por dentro das últimas novidades do mundo da tecnologia com os conteúdos do nosso blog!

Acelere a Transformação Digital da sua Empresa

Basta preencher este formulário ou ligar para +55 11 3055 3404

Fale conosco​

Technology Intelligence

Luby - Latin America

Rua Amália de Noronha, nº 151, 3º Andar, Sala 303
Pinheiros, São Paulo – SP – Brasil
CEP: 05410-010

Luby - North America

1110 Brickell Avenue
Suite 310
Miami – FL
United States

AWS certifications - AWS Partner
AWS certifications - Solutions Architect
Azure logo - Certifications Luby
Google Cloud Partner logo, a symbol of Luby's certifications and recognitions collaboration with Google.
Copyright ©2024 Luby Software LLC. All rights reserved.
Rolar para cima