Напишите generic-функцию/тип, который может обрабатывать данные пользователя, и объясните, как ограничить generic.

Generic сохраняет конкретный тип аргумента, а extends задаёт минимальные требования к его структуре, например наличие строкового id.

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

Что ответить на собеседовании

Generic сохраняет конкретный тип аргумента, а extends задаёт минимальные требования к его структуре, например наличие строкового id.

Подробный разбор

Ответ с пояснениями

Generic сохраняет конкретный тип аргумента, а extends задаёт минимальные требования к его структуре, например наличие строкового id.

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

function normalizeUser<T extends { id: string }>(user: T): T {
  return { ...user, id: user.id.trim() };
}
const user = normalizeUser({ id: ' 42 ', name: 'Анна' });
// user.name доступен: конкретный тип сохранён.

Ограничение — проверка типов при компиляции, а не runtime-валидация входящего JSON.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее