AS diferenças entre type e interface no TypeScript

O que é type ? No TypeScript, as interfaces são usadas para definir a forma de objetos, enquanto os types são usados para definir tipos de dados mais complexos. Uma das maiores diferenças entre tipos e interfaces é que interfaces são abertas e tipos são fechados. Isso signifca que você pode extender interfaces declarando uma segunda vez. // Por outro lado tipos não podem ser alterados fora da própria declaração. Diferenças Interface Type Uso Definir a forma de objetos ou a assinatura de funções Definir tipos de dados mais complexos Expressão Sempre uma declaração de forma Pode ser uma declaração ou uma expressão União e interseção Menos flexível Mais flexível Extensão Pode ser estendida usando a palavra-chave extends Representado de forma diferente Exemplos de uso Para definir as propriedades de um objeto, como nome, idade, e-mail, use uma interface Para definir um tipo de dados mais complexo, como uma união de tipos ou um tipo genérico, use um type Para declarar os tipos de uma classe e seus métodos, use interface Para declarar os tipos das props de uma função, use alias type As interfaces são uma maneira poderosa de definir contratos dentro do seu código, bem como contratos com código fora do seu projeto. Exemplo: // Definindo um tipo para um objeto type Pessoa = { nome: string; idade: number; }; // Usando o tipo const pessoa: Pessoa = { nome: "João", idade: 25, }; Quando usar type? Uniões e Interseções: quando você precisa combinar tipos, type é uma boa escolha. Ele permite criar uniões (um tipo ou outro) e interseções (combinação de tipos). type ID = string | number; // União type Coordenadas = { x: number } & { y: number }; // Interseção Dica do dev: se você precisa definir tipos que não são apenas objetos, como uniões de tipos primitivos, type é mais flexível. O que é interface? Interface é outra maneira de definir a forma de um objeto no TypeScript. Ela é usada principalmente para definir contratos para objetos, ou seja, especificar quais propriedades e métodos um objeto deve ter. Uma classe/objeto que implementa uma interface deve ter todos os campos e métodos (tirando os que você explicitamente declara como opcionais). Portanto, nós os usamos para verificação de tipo. Exemplo: // Definindo uma interface para um objeto interface Carro { marca: string; ano: number; } // Usando a interface const carro: Carro = { marca: "Toyota", ano: 2020, }; Experimente não passar a propriedade marca no objeto carro para ver o que acontece. Quando usar interface? Objetos e Classes: interface é ideal para definir a estrutura de objetos e classes. Ela é mais adequada quando você quer garantir que um objeto ou classe siga um determinado contrato. Extensibilidade: interface permite que você estenda outras interfaces, o que é útil para criar hierarquias de tipos. Exemplo: interface Veiculo { rodas: number; } interface Carro extends Veiculo { marca: string; } const meuCarro: Carro = { rodas: 4, marca: "Ford", }; Diferenças principais 1- Extensão: interface pode ser estendida por outras interfaces, enquanto type pode usar interseções para combinar tipos, mas não pode ser estendido da mesma forma. 2- Uniões: type pode criar uniões de tipos, enquanto interface não pode. 3- Implementação em Classes: interface é mais comumente usada para definir contratos que classes devem seguir. Para mais: Se você quiser se aprofundar mais, recomendo explorar a documentação oficial do TypeScript, onde você encontrará um playground com exemplos e explicações detalhadas sobre type e interface.

Mar 29, 2025 - 21:30
 0
AS diferenças entre type e interface no TypeScript

O que é type ?

No TypeScript, as interfaces são usadas para definir a forma de objetos, enquanto os types são usados para definir tipos de dados mais complexos.

Uma das maiores diferenças entre tipos e interfaces é que interfaces são abertas e tipos são fechados. Isso signifca que você pode extender interfaces declarando uma segunda vez. // Por outro lado tipos não podem ser alterados fora da própria declaração.

Diferenças Interface Type
Uso Definir a forma de objetos ou a assinatura de funções Definir tipos de dados mais complexos
Expressão Sempre uma declaração de forma Pode ser uma declaração ou uma expressão
União e interseção Menos flexível Mais flexível
Extensão Pode ser estendida usando a palavra-chave extends Representado de forma diferente

Exemplos de uso

Para definir as propriedades de um objeto, como nome, idade, e-mail, use uma interface
Para definir um tipo de dados mais complexo, como uma união de tipos ou um tipo genérico, use um type
Para declarar os tipos de uma classe e seus métodos, use interface
Para declarar os tipos das props de uma função, use alias type
As interfaces são uma maneira poderosa de definir contratos dentro do seu código, bem como contratos com código fora do seu projeto.

Exemplo:

// Definindo um tipo para um objeto
type Pessoa = {
  nome: string;
  idade: number;
};

// Usando o tipo
const pessoa: Pessoa = {
  nome: "João",
  idade: 25,
};

Quando usar type?
Uniões e Interseções: quando você precisa combinar tipos, type é uma boa escolha. Ele permite criar uniões (um tipo ou outro) e interseções (combinação de tipos).

type ID = string | number; // União
type Coordenadas = { x: number } & { y: number }; // Interseção


Dica do dev: se você precisa definir tipos que não são apenas objetos, como uniões de tipos primitivos, type é mais flexível.

O que é interface?
Interface é outra maneira de definir a forma de um objeto no TypeScript. Ela é usada principalmente para definir contratos para objetos, ou seja, especificar quais propriedades e métodos um objeto deve ter. Uma classe/objeto que implementa uma interface deve ter todos os campos e métodos (tirando os que você explicitamente declara como opcionais). Portanto, nós os usamos para verificação de tipo.

Exemplo:

// Definindo uma interface para um objeto
interface Carro {
  marca: string;
  ano: number;
}

// Usando a interface
const carro: Carro = {
  marca: "Toyota",
  ano: 2020,
};

Experimente não passar a propriedade marca no objeto carro para ver o que acontece.

Quando usar interface?
Objetos e Classes: interface é ideal para definir a estrutura de objetos e classes. Ela é mais adequada quando você quer garantir que um objeto ou classe siga um determinado contrato.

Extensibilidade: interface permite que você estenda outras interfaces, o que é útil para criar hierarquias de tipos.

Exemplo:

interface Veiculo {
  rodas: number;
}

interface Carro extends Veiculo {
  marca: string;
}

const meuCarro: Carro = {
  rodas: 4,
  marca: "Ford",
};

Diferenças principais

1- Extensão: interface pode ser estendida por outras interfaces, enquanto type pode usar interseções para combinar tipos, mas não pode ser estendido da mesma forma.

2- Uniões: type pode criar uniões de tipos, enquanto interface não pode.

3- Implementação em Classes: interface é mais comumente usada para definir contratos que classes devem seguir.

Para mais:

Se você quiser se aprofundar mais, recomendo explorar a documentação oficial do TypeScript, onde você encontrará um playground com exemplos e explicações detalhadas sobre type e interface.