Определение типизации для структуры объекта

Подходит Record<string, Man> или эквивалентная строковая index signature. Каждому произвольному строковому id сопоставляется объект Man.

Короткий ответ

Что ответить на собеседовании

Подходит Record<string, Man> или эквивалентная строковая index signature. Каждому произвольному строковому id сопоставляется объект Man.

Подробный разбор

Ответ с пояснениями

Условие

Требуется объявить тип, который описывает объект mansMap. Пример использования:

 const mansMap: ManMapType = {
    'id1': {
    name: 'Karl',
    age: 18;
    },
    'id2': {
    name: 'Karl',
    age: 18;
    },
    ...
}

type Man = {
    name: string;
    age: Age;
}

type ManMapType = 

Опишите тип ManMapType, учитывая, что ключи – произвольные строки‑идентификаторы, а значениями являются объекты типа Man.

Ответ

Подходит Record<string, Man> или эквивалентная строковая index signature. Каждому произвольному строковому id сопоставляется объект Man.

type Age = number;
type Man = { name: string; age: Age };
type ManMapType = Record<string, Man>;
// Альтернатива: type ManMapType = { [id: string]: Man };

Age в исходнике не определён, поэтому здесь выбран number; допустимость возраста проверяется отдельно. В литералах объектов после age:18 должны быть запятые, а не точки с запятой. Record не гарантирует существование любого ключа во время выполнения: включайте noUncheckedIndexedAccess либо явно возвращайте Man | undefined при поиске.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее