Typescript: Herança e Polimorfismo
TypeScript: Herança e Polimorfismo (TypeScript: 继承与多态)
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 (必须调用 super)
}
}
class EventoReinf extends EventoFiscal {
constructor(
id: string,
tenantId: string,
competencia: string,
public codigoEvento: string
) {
super(id, tenantId, competencia);
}
}
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);
O código que usa TransmissorFiscal não precisa saber qual implementação está recebendo — isso é o coração do polimorfismo.
使用 TransmissorFiscal 的代码无需知道它接收的是哪种具体实现——这就是多态的核心。