Pick
Встроенная утилита Pick<T, K> строит тип из выбранных полей другого типа:
Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноВстроенная утилита Pick<T, K> строит тип из выбранных полей другого типа:
type User = { name: string; age: number; admin: boolean };
type Short = Pick<User, "name" | "age">; // { name: string; age: number }В задании своя функция pick, которая делает то же со значением, но типизирована через object и string[]:
Ошибка: «Property 'name' does not exist on type 'object'». В рантайме short.name прекрасно существует, но тип результата object, и про поля он ничего не знает. Плюс в функцию можно передать любой ключ, даже которого нет у объекта, и внутри есть приведение as, которое отключает проверку.
Здесь собирается всё, что было в предыдущих заданиях: тип объекта нужно сохранить, ключи ограничить ключами этого объекта, а тип результата вычислить из того и другого.
Типизируй pick двумя параметрами типа: для объекта и для выбранных ключей. Результат опиши через Pick. shortName должен стать строкой, а ключ, которого нет у объекта, должен вызывать ошибку. Тело функции поправь так, чтобы в нём не осталось Record<string, unknown> и приведения самого obj.