TypeScript · Intermediário · Português · Técnico
sobrecarga de função
Declaração de várias assinaturas para a mesma função, seguidas de uma implementação única. Cada assinatura descreve uma combinação válida de parâmetros e o retorno correspondente.
Onde usar
Usada quando o tipo do retorno depende do tipo do argumento, como parse(x: string): number e parse(x: number): string. Quem chama enxerga só as assinaturas; a implementação fica escondida.
Em código
function dobrar(x: string): string;
function dobrar(x: number): number;
function dobrar(x: string | number) {
if (typeof x === 'string') return x + x;
return x * 2;
}
dobrar('ab'); // string
dobrar(4); // numberExemplos
Fiz uma sobrecarga de função para retornar string ou número conforme o argumento.
Quem chama só vê as assinaturas de sobrecarga, não a implementação.
Cuidado
A assinatura da implementação não é visível a quem chama. E, se uma union ou um genérico resolve o caso, costuma ser mais simples que sobrecarregar.
Sinônimos
function overload