Реализуйте generic-тип StateObject<T>, который преобразует исходный объектный тип в объект со свойством value, содержащим readonly-версию T, и методом update(key, value), типобезопасно обновляющим значение указанного свойства.

Свяжите ключ и значение generic-параметром K extends keyof T, а свойство value опишите через Readonly<T>.

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

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

Свяжите ключ и значение generic-параметром K extends keyof T, а свойство value опишите через Readonly<T>.

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

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

Свяжите ключ и значение generic-параметром K extends keyof T, а свойство value опишите через Readonly<T>.

Базовый контракт:

type StateObject<T extends object> = {
  readonly value: Readonly<T>;
  update<K extends keyof T>(key: K, value: T[K]): void;
};

Для конкретного ключа update проверит соответствующий тип значения. Readonly поверхностный и не замораживает объект в runtime. Если ключ сам является union, для строгой корреляции каждого возможного ключа со значением может потребоваться union кортежей аргументов.

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

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

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

Подробнее