Как сделать generic для value объекта?

В TypeScript есть возможность использовать generic для значений объекта. Для того чтобы создать generic для value объекта, вы можете использовать тип Record<K, V>, где K представляет собой тип ключа, а V - тип значения.

Вот пример использования generic для value объекта:

type MyObject<T> = Record<string, T>;

const obj: MyObject<number> = {
  foo: 10,
  bar: 20,
};

console.log(obj['foo']); // выводит: 10
console.log(obj['bar']); // выводит: 20

В приведенном примере мы создали тип MyObject<T>, который использует generic T. Затем мы определяем переменную obj, которая является объектом типа MyObject<number>. Здесь number - это generic аргумент для MyObject, указывающий, что значения в MyObject должны быть типа number.

Вы можете использовать любой тип вместо number в зависимости от ваших потребностей. Например, если вы хотите, чтобы значения в объекте были строками, вы можете использовать MyObject<string>:

const obj: MyObject<string> = {
  foo: 'Hello',
  bar: 'World',
};

console.log(obj['foo']); // выводит: Hello
console.log(obj['bar']); // выводит: World

Таким образом, generic типы позволяют создавать объекты с динамическими значениями, которые могут быть адаптированы к различным типам данных.