ANÚNCIO

~/questoes/programacao

Qual é a principal diferença entre 'interface' e 'type' em TypeScript?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Programação Interfaces Intermediario
Aula de referência TypeScript: tutorial para completos iniciantes
Para fixar

Interface vs Type em TypeScript: Entendendo as Diferenças

Conceito central

Interface e type são duas formas de definir estruturas de dados em TypeScript, mas com propósitos ligeiramente diferentes. Interfaces são focadas em descrever contratos para objetos e permitem extensão, enquanto types oferecem mais flexibilidade para trabalhar com unions, tuples e type aliases.

Por que essa resposta faz sentido

Interface permite extensão e herança enquanto type oferece flexibilidade com unions e tuples. Isso significa que interfaces são melhores para descrever objetos que podem ser estendidos, e types são ideais quando você precisa criar combinações de tipos ou estruturas mais complexas.

Armadilhas comuns

  • Achar que interface é apenas para objetos complexos e type é apenas para tipos simples. Na verdade, ambos podem descrever objetos; a diferença está na extensibilidade e flexibilidade.
  • Tentar usar union types (A | B) com interface da mesma forma que usa com type. Unions são uma característica nativa de type, não de interface.
  • Não perceber que interfaces podem ser declaradas múltiplas vezes e suas propriedades são mescladas automaticamente, enquanto types não permitem redeclaração.

Entenda as alternativas

A

Essa informação está incorreta. Type pode sim ser usado com objetos, e interface também funciona perfeitamente com qualquer estrutura. A diferença não é sobre o que cada um aceita, mas sobre seus recursos e flexibilidade.

B

Type não é uma construção antiga que deve ser evitada. Ambos, interface e type, continuam sendo válidos e úteis em TypeScript moderno. A escolha entre um e outro depende do caso de uso, não da versão do TypeScript.

C

Essa é a resposta correta. Interfaces são projetadas para descrever objetos e podem ser estendidas e herdadas. Types, por outro lado, oferecem flexibilidade adicional com unions (combinação de tipos) e tuples (arrays com tipos específicos em cada posição).

D

Embora tenham sido criadas em momentos diferentes do desenvolvimento do TypeScript, interface e type não são idênticos. Cada um tem características únicas que os tornam apropriados para situações diferentes.

Dica prática: Use interface quando estiver modelando objetos que podem ser estendidos (como um contrato para classes). Use type quando precisar de flexibilidade, como ao combinar múltiplos tipos com unions ou ao criar tuples. Por exemplo: interface Usuario { nome: string; } vs type Resposta = string | number.

Revise pensando: Qual você escolheria para descrever uma combinação de dois tipos diferentes, como 'sucesso ou erro'? Interface ou type?