ANÚNCIO

~/questoes/programacao

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

Responda, confira o feedback e use o resultado para orientar sua revisão.
Para fixar

Interface vs Type em TypeScript: Quando usar cada uma

Conceito central

Interface e type são duas formas de criar tipos customizados em TypeScript, mas com propósitos ligeiramente diferentes. Interface é especializada em descrever estruturas de objetos, enquanto type oferece flexibilidade para trabalhar com union types, tuplas e outros padrões mais complexos.

Por que essa resposta faz sentido

A alternativa correta reconhece que interface funciona exclusivamente com objetos, enquanto type é versátil e trabalha com qualquer tipo de dado. Isso reflete a distinção fundamental entre essas duas ferramentas no TypeScript prático.

Armadilhas comuns

  • Pensar que type só funciona com tipos primitivos. Type é versátil e trabalha com objetos, unions, tuplas e muito mais.
  • Achar que interface é sempre a melhor opção. Na verdade, quando você precisa trabalhar com unions (tipo | tipo) ou tuplas, type é o caminho correto.
  • Ignorar que ambas podem fazer muita coisa parecida com objetos. A diferença real está em casos especiais onde type é mais flexível.

Entenda as alternativas

A

Interface é otimizada para descrever a forma de objetos. Type, por outro lado, é flexível o suficiente para definir tipos primitivos, union types (como string | number), tuplas, aliases e muito mais. Esta é a diferença arquitetural mais importante entre as duas.

B

Type não é exclusivamente para primitivos. Ele funciona com objetos também, e é especialmente útil justamente porque pode trabalhar com primitivos, unions e outros padrões que interface não consegue. Type é a opção mais versátil.

C

Type não é antigo nem foi substituído. Ambos continuam sendo usados ativamente em projetos TypeScript modernos. A escolha entre um e outro depende do caso de uso, não da antigüidade. Muitos projetos usam os dois juntos.

D

Interface pode ser estendida, mas type também permite herança através do operador & (intersecção). Além disso, type pode ser estendido de forma diferente, mas igualmente poderosa. Ambos suportam padrões de extensão e reutilização.

Dica prática: Use interface quando estiver modelando a forma de um objeto ou quando planejar estender essa forma através de herança. Use type quando precisar de union types, tuplas ou quando estiver criando aliases para tipos simples. Em projetos reais, você usa os dois naturalmente conforme a situação exige.

Revise pensando: Se você precisasse criar um tipo que aceita tanto string quanto number, qual palavra-chave você escolheria: interface ou type? Por quê?