DEV Community

Yuri Peixinho
Yuri Peixinho

Posted on

Typescript: Sobrecarga de Métodos

Introdução

Subclasses podem substituir a implementação de métodos herdados usando override:

Sem override

class TransmissorBase {
  logar(msg: string): void {
    console.log(msg);
  }
}

class TransmissorReinf extends TransmissorBase {
  logar(msg: string): void {
    // sobrescreve, mas TypeScript não verifica
    console.log(`[REINF] ${msg}`);
  }
}
Enter fullscreen mode Exit fullscreen mode

Com override — recomendado

class TransmissorReinf extends TransmissorBase {
  override logar(msg: string): void {
    console.log(`[REINF] ${msg}`);
  }
}
Enter fullscreen mode Exit fullscreen mode

O override explícito faz o TypeScript verificar que o método realmente existe na classe pai — se você errar o nome, ele avisa:

class TransmissorReinf extends TransmissorBase {
  override lagar(msg: string): void { // ❌ erro — "lagar" não existe na base
    console.log(`[REINF] ${msg}`);
  }
}
Enter fullscreen mode Exit fullscreen mode

Chamando o método da classe pai com super

class TransmissorBase {
  protected logar(msg: string): void {
    console.log(`[BASE] ${msg}`);
  }
}

class TransmissorReinf extends TransmissorBase {
  override logar(msg: string): void {
    super.logar(msg);                   // chama o pai primeiro
    console.log(`[REINF] ${msg}`);      // depois adiciona comportamento
  }
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)