implements implements e classes como tipos

Última atualização: 2026-10-22

implements implements e classes como tipos

O implements faz uma classe reivindicar uma interface: o compilador verifica se a classe fornece cada membro exigido com os tipos compatíveis. A interface diz "o que ela pode fazer", a classe responde "como" — uma interface, muitas implementações diferentes.

GrupoFunções e Classes
TipoSintaxe
Modo strictNão necessário

ℹ️ Info O editor transpila TypeScript para JavaScript e o executa (sem verificação de tipos); veja a Saída de cada exemplo para o resultado da verificação.

📝 Sintaxe

interface Storage {
  save(key: string, value: string): void;
  load(key: string): string | null;
}

class MemoryStorage implements Storage {
  private map = new Map<string, string>();
  save(key: string, value: string): void { this.map.set(key, value); }
  load(key: string): string | null { return this.map.get(key) ?? null; }
}

⚙️ Parâmetros

implementsReivindica interfaces: várias de uma vez são permitidas (implements A, B); a verificação é "a classe satisfaz a interface"
extends + implementsAmbos podem ser combinados: class Foo extends Base implements Storage — herdar a implementação enquanto honra o contrato

Retorno:Os tipos de retorno dos métodos devem corresponder aos da interface ou ser mais estreitos (covariância); os parâmetros devem ser mais amplos (contravariância) — senão, erro de compilação.

▶ Exemplo

Edite o código abaixo e clique em Testar para ver o resultado transpilado:

Saída:

dark null

(Saída de execução após a transpilação; apagar o método load ou mudar seu tipo de retorno para string gera um erro de compilação — o implements verifica membro a membro)

💡 Observações

ℹ️ Info O implements é uma verificação de tempo de compilação sem efeito em execução; após a transpilação a interface some e a classe é uma classe comum.
⚠️ Atenção Interfaces descrevem apenas membros públicos — campos private não fazem parte da verificação; em contrapartida, todo membro da interface deve existir na classe, sem exceções.
💡 Dica É a inversão de dependência na prática: o código de negócio depende da interface Storage, os testes injetam MemoryStorage, a produção injeta LocalStorage — o código de quem chama nunca muda.
Mais casos em breve.

📚 Tutoriais relacionados

❓ Perguntas frequentes

P implements vs extends?
R O extends herda implementação (pega código); o implements promete uma forma (pega um contrato). Uma classe estende uma base, mas pode implementar muitas interfaces.
P Uma classe pode ser atribuída a um tipo interface sem implements?
R Sim — o TS é estrutural, a forma por si basta. O implements acrescenta intenção explícita e faz "a interface mudou, a classe não" aparecer na definição da classe, em vez de em cada ponto de atribuição.
P Uma interface pode restringir um construtor?
R Sim, por meio de uma assinatura new: interface Ctor<T> { new (...args: any[]): T } — comum para tipos de registro de fábrica e contêiner.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%