Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про TypeScript: TypeScript, generics, keyof, type safety, column configuration

Можно ли средствами TypeScript ограничить поле key в конфигурации колонок только ключами из переданных данных?

Проверяет понимание использования дженериков и keyof для типизации конфигурации колонок на основе переданных данных.

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

Да, можно. Используйте дженерики с keyof для ограничения ключей. Например, определите тип ColumnConfig с полем key: keyof T. Затем функция принимает данные типа T и массив ColumnConfig. TypeScript автоматически выведет T и проверит, что key — только существующие ключи данных.

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

Ограничение ключей в конфигурации колонок с помощью TypeScript

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

Как это работает

Создайте обобщенный тип ColumnConfig<T>, где T — тип данных. Поле key должно быть keyof T. Затем функция, принимающая данные и конфигурацию колонок, использует дженерик для вывода типа данных.

type ColumnConfig<T> = {
  key: keyof T;
  title: string;
};

function renderTable<T>(data: T[], columns: ColumnConfig<T>[]) {
  // реализация
}

// Пример использования
const users = [
  { id: 1, name: 'Alice', age: 30 },
  { id: 2, name: 'Bob', age: 25 }
];

const columns: ColumnConfig<typeof users[0]>[] = [
  { key: 'id', title: 'ID' },
  { key: 'name', title: 'Name' },
  // { key: 'email', title: 'Email' } // Ошибка: 'email' не существует в типе
];

renderTable(users, columns);

Применение на практике

Этот паттерн широко используется в UI-библиотеках (например, React Table, Ant Design Table) для создания типобезопасных таблиц. Он также полезен при работе с формами, где поля формы должны соответствовать ключам объекта данных.

Вывод

Используйте дженерики с keyof для ограничения ключей в конфигурации колонок. Это повышает типобезопасность кода, уменьшает количество ошибок и улучшает автодополнение в IDE. Особенно полезно в крупных проектах с множеством таблиц и форм.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • TypeScript

    TypeScript

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

#TypeScript

#generics

#keyof

#type safety

#column configuration

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию