Generic сохраняет конкретный тип аргумента, а extends задаёт минимальные требования к его структуре, например наличие строкового id.
Напишите generic-функцию/тип, который может обрабатывать данные пользователя, и объясните, как ограничить generic.
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.