ANÚNCIO

~/questoes/programacao

Qual é a diferença entre uma interface e um type alias em TypeScript?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Programação Type Aliases Intermediario
Aula de referência Curso de TypeScript para iniciantes: aprenda TypeScript na prática
Para fixar

Interface vs Type Alias em TypeScript: Entenda as Diferenças

Conceito central

Type aliases e interfaces são duas formas de definir tipos customizados em TypeScript, mas com propósitos diferentes. Type aliases são mais versáteis e podem descrever qualquer tipo, enquanto interfaces são focadas especificamente em estruturar objetos e classes.

Por que essa resposta faz sentido

Type alias permite descrever tipos mais complexos incluindo tipos unidade, tuplas, uniões e intersecções. Interfaces, por outro lado, são idealizadas para estruturar a forma de objetos e servir como contrato para classes implementarem.

Armadilhas comuns

  • Pensar que type alias é apenas para tipos primitivos como string ou number, quando na verdade pode descrever qualquer estrutura de tipo complexa
  • Usar interface para tudo por ser mais familiar, perdendo a oportunidade de usar type alias para criar uniões de tipos ou tuplas mais expressivas
  • Confundir que interface só funciona com classes, quando na verdade objetos literais também podem ser tipados com interface

Entenda as alternativas

A

Type alias com 'type' é versátil e suporta tipos primitivos, uniões, tuplas e intersecções. Interface com 'interface' é especializada em descrever a estrutura de objetos e contratos para classes.

B

Isso está incorreto. Type alias não é exclusivamente para tipos primitivos; ele pode descrever qualquer tipo incluindo objetos complexos. Interface também não é exclusiva de classes, pois objetos podem implementar interfaces.

C

A velocidade de compilação não é uma diferença prática entre interface e type alias. Ambos são compilados igualmente para JavaScript e não há impacto perceptível de desempenho no código final.

D

Não são a mesma coisa. Embora pareçam similares em alguns casos, eles têm diferenças significativas: type alias suporta uniões e tuplas, enquanto interface é mais apropriada para definir contratos de objetos e classes.

Dica prática: Use interface quando precisar descrever a estrutura de um objeto ou criar um contrato para uma classe implementar. Use type alias quando precisar de uniões (type Status = 'ativo' | 'inativo'), tuplas (type Coordenadas = [number, number]) ou intersecções de tipos.

Revise pensando: Se você precisa descrever um tipo que pode ser uma string OU um número, qual construção você usaria: interface ou type alias? Por quê?