Introdução
Assim como funções, construtores podem ter múltiplas assinaturas:
O problema
class Evento {
constructor(id: string, tipo: string, competencia: string) { ... }
// como aceitar também só id e tipo, sem competencia?
}
Solução — overload signatures
class Evento {
id: string;
tipo: string;
competencia: string;
// assinaturas
constructor(id: string, tipo: string);
constructor(id: string, tipo: string, competencia: string);
// implementação
constructor(id: string, tipo: string, competencia: string = "nao-definida") {
this.id = id;
this.tipo = tipo;
this.competencia = competencia;
}
}
new Evento("1", "R-2010"); // ✅ primeira assinatura
new Evento("1", "R-2010", "2024-01"); // ✅ segunda assinatura
Top comments (0)