> Что делает extends в TypeScript и зачем он нужен? (TypeScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: IT-One, TYMY

Стек: TypeScript

> Пример ответа

Ключевое слово extends в TypeScript выполняет две основные функции: наследование классов и ограничение обобщений (generic constraints).

1. Наследование классов - классический механизм ООП. Позволяет одному классу (дочернему) унаследовать свойства и методы другого (родительского). Например:

TYPESCRIPT
class Animal {
move() { console.log('Moving'); }
}
class Dog extends Animal {
bark() { console.log('Woof'); }
}
const dog = new Dog();
dog.move(); // Moving
dog.bark(); // Woof

2. Ограничение обобщений - более специфичная для TypeScript возможность. Позволяет указать, что тип-параметр должен быть подтипом определённого типа. Это даёт доступ к свойствам ограничивающего типа внутри обобщённой функции/класса:

TYPESCRIPT
interface HasLength {
length: number;
}
function logLength<T extends HasLength>(arg: T): T {
console.log(arg.length); // OK, так как T гарантированно имеет length
return arg;
}
logLength('hello'); // 5
logLength([1,2,3]); // 3
// logLength(123); // Ошибка: number не имеет length

Зачем нужен extends?

  • Для повторного использования кода через иерархию классов (избегаем дублирования).

  • Для безопасности типов в дженериках - гарантирует, что переданный тип обладает нужными свойствами, предотвращая ошибки во время компиляции.

  • Для полиморфизма - дочерние классы могут переопределять методы родителя, сохраняя единый интерфейс.

Таким образом, extends - это механизм как для классического наследования, так и для статической проверки типов в обобщённом коде.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью