Back to questions
Junior — Middle
92
Какие отличия существуют между перегрузкой функций и их переопределением в TypeScript?
Answer from AI
sobes.tech AI
В TypeScript:
-
Перегрузка функций (Function Overloading) — это объявление нескольких сигнатур одной функции с разными параметрами, но с одной реализацией. Позволяет вызывать функцию с разными наборами аргументов, при этом компилятор понимает, какой тип возвращаемого значения ожидать.
-
Переопределение функций (Overriding) — это механизм объектно-ориентированного программирования, когда подкласс предоставляет свою реализацию метода, который уже определён в базовом классе.
Пример перегрузки:
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
Пример переопределения:
class Animal {
speak() {
console.log("Animal speaks");
}
}
class Dog extends Animal {
speak() {
console.log("Dog barks");
}
}
const dog = new Dog();
dog.speak(); // "Dog barks"
Итого:
- Перегрузка — разные варианты вызова одной функции.
- Переопределение — замена поведения метода в наследнике.