Sobes.tech
Junior — Middle

Quais são as diferenças entre sobrecarga de funções e sua substituição em TypeScript?

sobes.tech IA

Resposta da IA

Em TypeScript:

  • Sobrecarga de funções (Function Overloading) — é a declaração de várias assinaturas de uma mesma função com diferentes parâmetros, mas com uma única implementação. Permite chamar a função com diferentes conjuntos de argumentos, e o compilador entende qual o tipo de valor de retorno a esperar.

  • Sobrescrita de funções (Overriding) — é um mecanismo de programação orientada a objetos, onde uma subclasse fornece sua própria implementação de um método que já está definido na classe base.

Exemplo de sobrecarga:

function combine(a: string, b: string): string;
function combine(a: number, b: number): number;
function combine(a: any, b: any): any {
  return a + b;
}

const result1 = combine("Hello, ", "world"); // string
const result2 = combine(1, 2); // number

Exemplo de sobrescrita:

class Animal {
  speak() {
    console.log("Animal speaks");
  }
}

class Dog extends Animal {
  speak() {
    console.log("Dog barks");
  }
}

const dog = new Dog();
dog.speak(); // "Dog barks"

Resumindo:

  • Sobrecarga — diferentes formas de chamar uma mesma função.
  • Sobrescrita — substituição do comportamento do método na herança.