ExpertiDict

TypeScript · Intermediário · Português · Técnico

sobrecarga de função

/sobɾeˈkaɾɡa dʒi fũˈsɐ̃w/substantivo feminino

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);    // number

Exemplos

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

Veja também

Todos os termos de TypeScript