Typescript: Herança e Polimorfismo

작성자

카테고리:

← 피드로
DEV Community · Yuri Peixinho · 2026-06-14 개발(SW)

Yuri Peixinho

Herança

Herança é quando uma classe estende outra e herda seus membros:

class EntidadeBase {
  constructor(
    public id: string,
    public criadoEm: Date = new Date()
  ) {}

  toString(): string {
    return `[${this.id}]`;
  }
}

class EventoFiscal extends EntidadeBase {
  constructor(
    id: string,
    public tenantId: string,
    public competencia: string
  ) {
    super(id); // obrigatório chamar super
  }
}

class EventoReinf extends EventoFiscal {
  constructor(
    id: string,
    tenantId: string,
    competencia: string,
    public codigoEvento: string
  ) {
    super(id, tenantId, competencia);
  }
}

Enter fullscreen mode Exit fullscreen mode

Polimorfismo

Polimorfismo é a capacidade de tratar objetos de tipos diferentes de forma uniforme através de um tipo base:

abstract class TransmissorFiscal {
  abstract transmitir(payload: unknown): Promise<Protocolo>;
}

class TransmissorReinf extends TransmissorFiscal {
  async transmitir(payload: unknown): Promise<Protocolo> {
    return api.post("/reinf", payload);
  }
}

class TransmissorEFinanceira extends TransmissorFiscal {
  async transmitir(payload: unknown): Promise<Protocolo> {
    return api.post("/efinanceira", payload);
  }
}

// função que aceita qualquer transmissor — polimorfismo
async function executarTransmissao(
  transmissor: TransmissorFiscal,
  payload: unknown
) {
  return transmissor.transmitir(payload); // não importa qual é
}

// chamadas polimórficas
executarTransmissao(new TransmissorReinf(), payload);
executarTransmissao(new TransmissorEFinanceira(), payload);

Enter fullscreen mode Exit fullscreen mode

O código que usa TransmissorFiscal não precisa saber qual implementação está recebendo — isso é o coração do polimorfismo.

원문에서 계속 ↗

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다