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.