0Pricing
TypeScript Academy · Урок

Условные типы

Узнайте, как условные типы динамически изменяются в зависимости от условий, обеспечивая гибкость и повторное использование определений типов

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

Введение в условные типы

Введение в условные типы

Условные типы в TypeScript позволяют создавать типы, которые динамически адаптируются к условию, делая код более гибким и пригодным для повторного использования.

Они используют синтаксис, похожий на синтаксис условного (ternary) оператора JavaScript.

Условные типы — иллюстрация 1

Что такое условные типы

Что такое условные типы?

Условные типы позволяют определить тип, зависящий от другого типа. Базовый синтаксис выглядит так:

T extends U ? X : Y

Это означает: если T расширяет U, типом будет X, иначе — Y.

Базовый пример условных типов

Базовый пример условных типов

Вот простой пример:

type IsString<T> = T extends string ? 'Yes' : 'No';

// Test cases
type A = IsString<string>; // 'Yes'
type B = IsString<number>; // 'No'

Использование условных типов для перегрузки функций

Использование условных типов для перегрузки функций

Условные типы могут упростить перегрузку функций, динамически определяя возвращаемые типы:

type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;

function getData(): string {
  return 'Hello';
}

type DataType = ReturnType<typeof getData>; // string

Распределительные условные типы

Распределительные условные типы

Когда условные типы применяются к объединённым типам, они распределяются по каждому элементу объединения:

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

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

Объединение условных и отображаемых типов

Объединение условных и отображаемых типов

Вы можете объединять условные типы с отображаемыми типами для мощного преобразования типов:

type User = {
  id: number;
  name: string;
  isAdmin?: boolean;
};

type MakeRequired<T> = {
  [K in keyof T]-?: T[K] extends undefined ? never : T[K];
};

type RequiredUser = MakeRequired<User>;
// { id: number; name: string; isAdmin: never; }

Распространённые случаи использования условных типов

Распространённые случаи использования условных типов

Условные типы часто применяются для:

  • Вывода возвращаемых типов или параметров.
  • Преобразования объединений и пересечений.
  • Создания вспомогательных типов, таких как Exclude, Extract и NonNullable.

Практическое задание

Практическое задание

Создайте условный тип, который проверяет, является ли тип массивом, и в таком случае возвращает тип его элементов; иначе он возвращает сам тип.

Поздравляем!

Поздравляем!

Вы научились использовать условные типы для создания динамических и пригодных для повторного использования определений типов в TypeScript. Потренируйтесь применять эти концепции, чтобы писать более мощный и гибкий код на TypeScript!

Условные типы — иллюстрация 10

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

Урок «Условные типы» бесплатный?

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

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

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

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

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

Сколько времени занимает урок «Условные типы»?

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

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

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

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

  1. Продвинутое сужение типов
  2. Расширенные возможности классов
  3. Условные типы
← Назад к TypeScript Academy