Код 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
asв mapped-типе переименовывает ключ;Capitalizeработает только со строками, отсюдаK extends string.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
snake_case в camelCase: ключи и тип
Следующий вопрос
Парсинг query string в типизированный объект