Sobes.tech
Назад к вопросам
Junior — Middle
106

Каким образом TypeScript поддерживает концепцию полиморфизма в типах и классах?

Ответ от нейросети

sobes.tech AI

TypeScript поддерживает полиморфизм через наследование классов и интерфейсов, а также через обобщённые типы (generics). Классы могут наследовать друг друга, переопределять методы и свойства, что позволяет использовать объекты подклассов там, где ожидаются объекты базового класса (подтипизация).

Пример с классами:

class Animal {
  speak() {
    console.log('Животное издаёт звук');
  }
}

class Dog extends Animal {
  speak() {
    console.log('Гав-гав');
  }
}

function makeSpeak(animal: Animal) {
  animal.speak();
}

const dog = new Dog();
makeSpeak(dog); // Выведет: Гав-гав

Обобщённые типы позволяют создавать функции и классы, которые работают с разными типами, сохраняя при этом типовую безопасность:

type Wrapper<T> = {
  value: T;
};

function wrap<T>(x: T): Wrapper<T> {
  return { value: x };
}

const wrappedNumber = wrap(42); // Wrapper<number>
const wrappedString = wrap('hello'); // Wrapper<string>

Таким образом, TypeScript реализует полиморфизм через наследование, интерфейсы и generics, что позволяет писать гибкий и типобезопасный код.