Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про TypeScript: typescript, generic

Как типизировать функцию, которая получает значение объекта по ключу?

Вопрос проверяет умение использовать generics и keyof для безопасного доступа к свойствам объекта.

Короткий ответ

Функцию типизируют с помощью generic-параметров и keyof. Ключ ограничивается ключами объекта, а тип возвращаемого значения зависит от переданного ключа. Это позволяет TypeScript точно вывести тип и предотвратить доступ к несуществующим свойствам. Такой подход делает код безопасным и самодокументируемым.

Длинный ответ

Задача — связать тип ключа с типом значения объекта.

Определение

  • keyof T — объединение всех ключей объекта T.

  • T[K] — тип значения по ключу K.

Базовая типизация функции

function getValue<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}

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

const user = {
  id: 1,
  name: "Alex",
  active: true,
};

const name = getValue(user, "name");   // string
const active = getValue(user, "active"); // boolean

Что даёт такой подход

  1. Нельзя передать несуществующий ключ.

  2. Тип результата зависит от ключа.

  3. Работает автодополнение в IDE.

Почему не просто string

function bad(obj: any, key: string) {
  return obj[key];
}

Минусы:

  1. Нет проверки ключей.

  2. Потеря типов.

  3. Возможные runtime-ошибки.

Вывод

Использование keyof и generic-параметров — стандартный способ типобезопасного доступа к свойствам объекта в TypeScript.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • TypeScript

    TypeScript

Ключевые слова

#typescript

#generic

Подпишись на React Developer в телеграм