Как типизировать new Map в typescript с разными values?

В TypeScript, чтобы типизировать новое вхождение Map с разными значениями, вы можете использовать обобщенные типы или тип Record.

Обобщенные типы позволяют определить общий тип для ключей и значения Map. Это позволяет разрабатывать более гибкие типы. Например:

const map: Map<string, number> = new Map<string, number>();
map.set("key1", 1);
map.set("key2", 2);

В этом примере тип Map принимает два обобщенных типа: первый для типа ключа (в данном случае string), второй для типа значения (в данном случае number).

Также можно использовать тип Record, чтобы определить тип значения. Тип Record создает объект, где ключи - это свойства объекта, а значения - типы для свойств. Например:

const map: Map<string, Record<string, string>> = new Map<string, Record<string, string>>();
const innerRecord: Record<string, string> = {
  prop1: "value1",
  prop2: "value2",
};
map.set("key", innerRecord);

В этом примере тип значения Map - это Record<string, string>. Это означает, что значение в Map будет иметь тип объекта, где ключи и значения - это строки.

Таким образом, в TypeScript вы можете типизировать new Map с разными значениями, используя обобщенные типы или тип Record. Это позволит вам создавать более явные и безопасные программы, основанные на типах данных.