Sobes.tech
Back to questions
Junior — Middle
91

Какие отличия существуют между перегрузкой функций и их переопределением в 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"

Итого:

  • Перегрузка — разные варианты вызова одной функции.
  • Переопределение — замена поведения метода в наследнике.