Я использую React с поддержкой TypeScript и на странице создания пользователей я реализовал динамическое создание разрешений, следуя этому миру кода. Разрешения, используемые на странице, устанавливаются следующим хуком:
const [permissions, setPermissions] = useState<{ perm: string; isTrue: boolean; }[]>([]);
Однако интерфейс IUser имеет следующие разрешения:
export interface IUser {
permissions: Map<string, boolean>
}
Как мне преобразовать тип Map<string, boolean> в { perm: string; isTrue: boolean; }[]?
Я пробовал использовать Map.prototype.forEach() и Map.prototype.entries(), но не смог понять, как привести их результаты к нужному типу.
Я также знаю, что обратное преобразование можно выполнить с помощью следующего трюка , но не уверен, что его можно использовать наоборот.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать Array.from() с пользовательским параметром функции обратного вызова карты, который деструктурирует каждый элемент карты на его ключ (=perm) и значение (=isTrue) и создает из него новый объект.
export interface IUser {
permissions: Map<string, boolean>;
}
declare const permissionsMap: Map<string, boolean>;
const permissionsArray = Array.from(permissionsMap, ([perm, isTrue]) => ({
perm,
isTrue,
}));
// const permissionsArray: { perm: string; isTrue: boolean; }[]
Соответствует ли такой подход вашим потребностям? Если да, то я с удовольствием напишу ответ.