Типы доступа по индексу в TypeScript

21 июля 2026
Автор

Дмитрий Нечаев

Типы доступа по индексу в TypeScript позволяют разработчикам получить доступ к типу данных, который хранится в свойствах других типов. Это особенно полезно в ситуациях, когда структура данных является сложной или когда разработчик хочет убедиться, что доступ к данным типизирован и безопасен.

Курс по теме

Курс TypeScript с нуля с нуля

40 000+ студентов · рейтинг 4.8 · гарантия возврата 30 дней

Определение

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

Type[KeyType]

где Type — это тип, к свойствам которого вы хотите получить доступ, а KeyType — это тип ключа, который используется для индексации.

Типы доступа по индексу позволяют гибко работать с типами объектов и массивов, извлекая нужные типы свойств. Глубокое понимание типов доступа по индексу требует знания Generics и условных типов. Если вы хотите освоить эти концепции и уверенно использовать типы доступа по индексу, приходите на наш большой курс TypeScript с нуля. На курсе 192 уроков и 17 упражнений, AI-тренажеры для безлимитной практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.

Примеры использования

Допустим, у нас есть объект с типом User, и мы хотим получить тип одного из его свойств:

interface User {
  id: number;
  name: string;
  age: number;
}

// Тип для свойства 'name'
type UserName = User["name"];  // string

В этом примере UserName теперь является типом string, так как свойство name в интерфейсе User имеет тип string.

Сложные структуры

Типы доступа по индексу особенно полезны, когда вы работаете со сложными или вложенными структурами. Рассмотрим следующий пример с вложенными объектами:

interface Product {
  id: number;
  details: {
    name: string;
    price: number;
  }
}

// Доступ к типу вложенного свойства 'price'
type ProductPrice = Product["details"]["price"];  // number

Здесь ProductPrice определяется как number, так как это тип свойства price внутри вложенного объекта details.

Динамический доступ

Можно также использовать переменные для динамического определения типов с помощью индексированных типов доступа:

type Keys = "id" | "name" | "age";
type UserProperty = User[Keys];  // number | string

Этот пример показывает, как можно извлечь типы нескольких свойств одновременно, где UserProperty будет соответствовать типам всех указанных свойств (id, name, age).

Заключение

Типы доступа по индексу в TypeScript представляют собой мощный инструмент для управления типами данных в сложных структурах. Они обеспечивают гибкость и безопасность при обращении к данным, позволяя разработчикам чётко определять, какие данные и какого типа они могут использовать в своих проектах. Эта возможность является одним из множества примеров того, как TypeScript улучшает поддержку типов и структур данных по сравнению с JavaScript.

Для эффективного применения типов доступа по индексу на практике необходимо уверенное знание TypeScript и понимание системы типов. На нашем курсе TypeScript с нуля вы изучите продвинутые типы и получите практический опыт работы с ними. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в TypeScript прямо сегодня.

Стрелочка влевоРуководство по тестированию TypeScript с JestGenerics в TypeScriptСтрелочка вправо

Постройте личный план изучения Typescript до уровня Middle — бесплатно!

Typescript — часть карты развития Frontend

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по Typescript

Как правильно использовать тип UnknownИспользование Union в TypeScriptТипы данных в TypeScriptType Guards в TypeScript — как работает сужение типовSymbols в TypeScriptСтруктурная типизация в TypeScriptNull и Undefined в TypeScriptТип never в TypeScriptСужение типов (Narrowing) в TypeScriptПонимание Literal Types. Ключевые аспекты и примеры использованияОператор infer в Typescript?Типы функций в TypeScript. Руководство для разработчиковEnums в TypeScriptДискриминированные объединения в TypeScriptСлужебный тип Awaited в TypeScriptКак типизировать массивы TypeScriptКак правильно использовать тип any
Открыть базу знаний

Лучшие курсы по теме

изображение курса

TypeScript с нуля

Антон Ларичев
AI-тренажерыAI-тренажеры
Практика в студииПрактика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

CSS Flexbox

Антон Ларичев
Гарантия
Бонусы
иконка звёздочки рейтинга4.9
бесплатно
Подробнее
изображение курса

Next.js - с нуля

Антон Ларичев
AI-тренажерыAI-тренажеры
Практика в студииПрактика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.7
3 999 ₽ 6 990 ₽
Подробнее

Отправить комментарий