Индексный доступ
Запись T[K] из задания 5 работает не только с одним ключом. Если в квадратные скобки подставить объединение ключей, получится объединение типов соответствующих полей:
Онлайн-редактор кода, разбор решения и отметки о прогрессе доступны после входа.
ВойтиСоздать аккаунт — бесплатноЗапись T[K] из задания 5 работает не только с одним ключом. Если в квадратные скобки подставить объединение ключей, получится объединение типов соответствующих полей:
type User = { id: number; name: string; admin: boolean };
type IdOrName = User["id" | "name"]; // number | stringВ задании нужен тип «любое значение поля пользователя»:
Ошибка: «Type 'number' is not assignable to type 'string'». UserValue написан руками и учитывает только строковое поле. Можно дописать string | number, и сейчас это сработает, но завтра у пользователя появится поле admin: boolean, и тип снова отстанет.
Нужно, чтобы UserValue вычислялся из User и всегда содержал типы всех полей, сколько бы их ни было. Ключи всех полей ты уже умеешь получать.
Подробнее: Indexed Access Types — справочник TypeScript.
Опиши UserValue через User так, чтобы он был объединением типов всех его полей. Тип User и массив values менять не нужно.