Назад к вопросам
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, что позволяет писать гибкий и типобезопасный код.