keyof и типы индексированного доступа (введение)
Используйте keyof для создания объединений имён свойств, а типы индексированного доступа (T[K] / T["prop"]) — для безопасного чтения типов свойств.
«keyof и типы индексированного доступа (введение)» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 3 уроков всего.
Введение
Цель: создавать более безопасные вспомогательные функции с помощью keyof (объединений имён свойств) и индексированного доступа (T[K]) для чтения типов свойств.
keyof
keyof создаёт объединение имён свойств типа (например, "id" | "name" | "email").
interface User {
id: number;
name: string;
email?: string;
}
type UserKeys = keyof User; // "id" | "name" | "email"keyof typeof
Используйте keyof typeof, чтобы получить ключи из значения (объекта) для типизации параметров.
const SETTINGS = {
theme: "dark",
lang: "en",
} as const;
type SettingKey = keyof typeof SETTINGS; // "theme" | "lang"Индексированный доступ
Индексированный доступ возвращает тип свойства: User["name"] — это string.
interface User {
id: number;
name: string;
email?: string;
}
type NameType = User["name"]; // string
Вспомогательная функция getProperty
Объедините keyof с K extends keyof T, чтобы ограничить ключи и возвращать точный тип T[K].
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
const u = { id: 1, name: "Ada" };
const v1 = getProperty(u, "name"); // string
const v2 = getProperty(u, "id"); // number
console.log(v1.toUpperCase(), v2.toFixed(0));Советы
Советы:
- Предпочитайте keyof typeof для получения ключей из объектов.
- Используйте T[K], чтобы отражать типы свойств без дублирования моделей.
- Избегайте ключей, заданных произвольными строками; используйте объединения для безопасности.
Проверка индексированного доступа
Быстрая проверка: Что представляет T[K]?
Итоги
Итоги: keyof задаёт объединения ключей; keyof typeof выводит ключи из значений; T[K] считывает типы свойств — это идеально для безопасных вспомогательных функций.
Изучай TypeScript с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 101
- Уроки
- 352
Часто задаваемые вопросы
Урок «keyof и типы индексированного доступа (введение)» бесплатный?
Да — полный текст урока «keyof и типы индексированного доступа (введение)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 3 уроков всего.
Чему я научусь в уроке «keyof и типы индексированного доступа (введение)»?
Используйте keyof для создания объединений имён свойств, а типы индексированного доступа (T[K] / T["prop"]) — для безопасного чтения типов свойств. Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.
Сколько времени занимает урок «keyof и типы индексированного доступа (введение)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Обобщённые функции и ограничения (extends, параметры по умолчанию)
- Partial, Readonly, Record, Pick и Omit
- keyof и типы индексированного доступа (введение)