0Pricing
TypeScript Academy · Урок

Условные типы (введение) и распределение по объединениям

Изучите условные типы (T extends U ? X : Y) и узнайте, как они распределяются по объединениям, обеспечивая мощную логику на уровне типов.

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

Введение

Цель: использовать условные типы (T extends U ? X : Y) для ветвления на уровне типов и понять, как распределение по объединениям обеспечивает точные результаты.

Базовое условие

Условный тип возвращает один из двух типов в зависимости от того, выполняется ли T extends U.

type IsString<T> = T extends string ? true : false;

let a: IsString<string>;   // true
let b: IsString<number>;   // false

Распределение

С необёрнутым параметром типа T условие выполняется для каждого элемента объединения, после чего результаты объединяются.

type ToArray<T> = T extends any ? T[] : never;

type R1 = ToArray<string | number>; // string[] | number[]

Остановка распределения

Оберните T в кортеж (например, [T]), чтобы остановить распределение и рассматривать объединение целиком.

type ToArrayNoDistrib<T> = [T] extends [any] ? T[] : never;

type R2 = ToArrayNoDistrib<string | number>; // (string | number)[]

Практическое применение Exclude

Многие типы-утилиты используют распределение (например, Exclude и Extract). Вы легко можете создавать собственные варианты.

type MyExclude<T, U> = T extends U ? never : T;

type R3 = MyExclude<"a" | "b" | "c", "b">; // "a" | "c"

Советы

Советы:

  • Распределение происходит только у необёрнутого параметра типа слева от extends.
  • Оберните параметр в кортеж, чтобы отключить распределение.
  • Проверяйте небольшие примеры, чтобы подтвердить свои предположения.

Проверка распределения

Быстрая проверка: Почему условные типы распределяются по объединениям?

Итоги

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

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

Урок «Условные типы (введение) и распределение по объединениям» бесплатный?

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

Чему я научусь в уроке «Условные типы (введение) и распределение по объединениям»?

Изучите условные типы (T extends U ? X : Y) и узнайте, как они распределяются по объединениям, обеспечивая мощную логику на уровне типов. Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

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

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

Сколько времени занимает урок «Условные типы (введение) и распределение по объединениям»?

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

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

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

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

  1. Обобщённые интерфейсы и псевдонимы типов
  2. Условные типы (введение) и распределение по объединениям
  3. Повторно используемые шаблоны для моделей данных
← Назад к TypeScript Academy