0Pricing
TypeScript Academy · Урок

Расширение и объединение интерфейсов

Расширяйте интерфейсы и разберитесь в объединении объявлений

«Расширение и объединение интерфейсов» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.

Добро пожаловать

Интерфейсы могут расширять другие интерфейсы, создавая новые структуры на основе существующих, а TypeScript автоматически объединяет несколько объявлений одного и того же интерфейса.

Расширение интерфейса

Используйте ключевое слово `extends`, чтобы создать новый интерфейс, включающий все свойства родительского интерфейса.
interface Animal { name: string; }
interface Dog extends Animal {
  breed: string;
}
const rex: Dog = { name: 'Rex', breed: 'Labrador' };

Расширение нескольких интерфейсов

Интерфейс может одновременно расширять несколько интерфейсов, объединяя все их свойства.
interface Flyable { fly(): void; }
interface Swimmable { swim(): void; }
interface Duck extends Flyable, Swimmable {
  quack(): void;
}

Переопределение свойств при расширении

Расширенный интерфейс может переопределить свойство родительского интерфейса, но новый тип должен быть совместим с типом родительского свойства.
interface Base { value: string | number; }
interface Derived extends Base { value: string; } // OK — string is narrower
// interface Bad extends Base { value: boolean; } // Error

Слияние объявлений

Когда Вы объявляете два интерфейса с одним именем, TypeScript объединяет их в один интерфейс со всеми свойствами.
interface Window { title: string; }
interface Window { location: Location; }
// Merged: Window has both title and location

Расширение типов библиотек

Слияние объявлений используется для расширения типов сторонних библиотек. Например, можно добавить свойства в интерфейс Request библиотеки Express.
// express.d.ts
declare namespace Express {
  interface Request {
    user?: User;
  }
}

Интерфейс, расширяющий псевдоним типа

Интерфейс может расширять псевдоним типа, если этот псевдоним задаёт тип объекта.
type Named = { name: string };
interface User extends Named { email: string; }

Вложенные цепочки расширений

Цепочки расширений могут иметь несколько уровней.
interface A { a: number; }
interface B extends A { b: number; }
interface C extends B { c: number; }
const obj: C = { a: 1, b: 2, c: 3 };

Расширение и реализация

`extends` используется для наследования интерфейса от интерфейса или класса от класса. `implements` используется, чтобы класс выполнил контракт интерфейса.
interface Serializable { serialize(): string; }
class Model implements Serializable {
  serialize() { return JSON.stringify(this); }
}

Слияние добавляется ко всем вариантам использования

После слияния интерфейсов весь существующий код, использующий этот интерфейс, автоматически получает новые свойства, поэтому расширение библиотек работает именно так.

Слияние и расширение: когда что использовать

Используйте `extends`, чтобы создать новый интерфейс на основе существующего. Используйте слияние (то же имя), чтобы добавить свойства в интерфейс из отдельного файла, например при расширении библиотеки.

Быстрая проверка

Какая возможность TypeScript позволяет добавлять свойства в интерфейс сторонней библиотеки?

Итоги

Интерфейсы расширяют другие интерфейсы с помощью `extends`, объединяя их структуры. Слияние объявлений автоматически объединяет интерфейсы с одинаковыми именами. Это позволяет расширять библиотеки, не изменяя сторонний код.

Часто задаваемые вопросы

Урок «Расширение и объединение интерфейсов» бесплатный?

Да — полный текст урока «Расширение и объединение интерфейсов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Расширение и объединение интерфейсов»?

Расширяйте интерфейсы и разберитесь в объединении объявлений Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Расширение и объединение интерфейсов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Определение структуры объектов с помощью интерфейсов
  2. Псевдонимы типов для сложных типов
  3. Расширение и объединение интерфейсов
  4. Интерфейс или тип: когда что использовать
← Назад к TypeScript Academy