Код Middle Условные и mapped-типы обновлено

Префикс ключей: key remapping в mapped-типе

Условие

Напиши prefixKeys<T extends Record<string, unknown>, P extends string>(obj: T, prefix: P): PrefixKeys<T, P>, где PrefixKeys переименовывает каждый ключ k в ${P}${Capitalize<k>}: prefixKeys({ id: 1, name: 'a' }, 'user') → { userId: 1, userName: 'a' } с типом { userId: number; userName: string }.

Применение: склеить в один плоский объект поля заказа и клиента для CSV-выгрузки (demo).

Примеры

demo({"id":1,"total":500}, {"id":7,"name":"Аня"}) // [1, 500, 7, "Аня"]
demo({"id":0,"total":0}, {"id":0,"name":""}) // [0, 0, 0, ""]
demo({"id":2,"total":10}, {"id":3,"name":"Б"}) // [2, 10, 3, "Б"]

Как подойти

Подсказки: 1
  1. as в mapped-типе переименовывает ключ; Capitalize работает только со строками, отсюда K extends string.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.