Код Junior Утилитарные типы обновлено
Diff объектов: Partial<T> с изменёнными полями
Условие
Напиши changedFields<T extends Record<string, unknown>>(before: T, after: T): Partial<T>: возвращает объект только с теми полями after, значения которых отличаются от before (сравнение через Object.is для примитивов; для массивов и объектов сравнивай JSON.stringify). Такой diff удобно отправлять в PATCH и писать в аудит-лог.
Примеры
changedFields({"name":"Аня","age":30}, {"name":"Аня","age":31}) // {"age":31}
changedFields({"a":1}, {"a":1}) // {}
changedFields({"tags":["a"],"meta":{"x":1}}, {"tags":["a","b"],"meta":{"x":1}}) // {"tags":["a","b"]}
Как подойти
Подсказки: 1
Object.keysвозвращаетstring[]: для индексацииTприведи к(keyof T)[].
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.