0Pricing
TypeScript Academy · Урок

Пересечения типов: A и B

Объединяйте типы с помощью &, чтобы слить их свойства

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

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

Типы-пересечения объединяют несколько типов в один. Значение типа-пересечения должно одновременно удовлетворять ALL объединённым типам.

Базовый синтаксис пересечения

Используйте оператор `&`, чтобы создать пересечение. Результат содержит все свойства обоих типов.
type Named = { name: string };
type Aged = { age: number };
type Person = Named & Aged;
const alice: Person = { name: 'Alice', age: 30 };

Обязательны все свойства

Пересечение требует ALL свойств всех объединённых типов. Отсутствие любого свойства приводит к ошибке типа.
type A = { x: number };
type B = { y: number };
type AB = A & B;
// const p: AB = { x: 1 }; // Error — missing y

Объединение типов объектов

Пересечения часто используют для объединения двух типов объектов, которые не расширяют друг друга.
type Serializable = { serialize(): string };
type Loggable = { log(): void };
type Service = Serializable & Loggable;

Пересечение и расширение

Расширение интерфейса и пересечение дают похожие результаты для типов объектов, но пересечение работает с псевдонимами типов, включая объединения и примитивы.
// Interface extend:
interface C extends A, B {}

// Intersection type:
type D = A & B;
// Both give the same shape for simple objects

Пересечение конфликтующих типов

Если у двух пересекающихся типов есть одно свойство с конфликтующими типами, результатом для этого свойства становится тип без значений `never`.
type X = { id: string };
type Y = { id: number };
type XY = X & Y;
// XY.id is string & number = never — impossible!

Пересечение в параметрах функции

Принимайте аргумент, который должен соответствовать нескольким контрактам интерфейсов, с помощью пересечения.
function process(item: Serializable & Loggable): void {
  item.log();
  console.log(item.serialize());
}

Шаблон миксинов с пересечениями

Пересечения позволяют использовать шаблон миксинов — объединять поведение из нескольких источников.
type Timestamped<T> = T & { createdAt: Date };
type User = Timestamped<{ name: string; email: string }>;

Пересечения примитивов сводятся к типу без значений

Пересечение примитивных типов, которые не могут иметь общих значений, сводится к `never`.
type T = string & number; // never — a value can't be both

Пересечение и объединение: ключевое различие

Объединение (`|`) означает OR — значение может иметь любой один из типов. Пересечение (`&`) означает AND — значение должно удовлетворять всем типам.

Использование пересечений с обобщениями

Сочетайте обобщённый тип с дополнительными свойствами с помощью пересечения, создавая гибкие и расширяемые типы.
type WithId<T> = T & { id: number };
const user: WithId<{ name: string }> = { id: 1, name: 'Alice' };

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

Во что вычисляется `type T = string & number`?

Повторение

Типы-пересечения (`&`) требуют ALL свойств всех объединённых типов. Используйте их для объединения форм объектов, реализации миксинов и сочетания обобщённых типов. Конфликтующие пересечения примитивов сводятся к типу без значений.

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

Урок «Пересечения типов: A и B» бесплатный?

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

Чему я научусь в уроке «Пересечения типов: A и B»?

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

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

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

Сколько времени занимает урок «Пересечения типов: A и B»?

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

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

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

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

  1. Объединения типов: A или B
  2. Пересечения типов: A и B
  3. Размеченные объединения для безопасного сопоставления с шаблонами
  4. Практические шаблоны с объединениями и пересечениями
← Назад к TypeScript Academy