#typescript #protocol-buffers #proto #protoc #grpc-web
#typescript #протокол-буферы #proto #протокол #grpc-web
Вопрос:
У меня есть следующий proto, который определяет словарную карту, при преобразовании в typescript этот тип возвращается как массив кортежей Array<[string,string]>
, однако я хотел бы, чтобы он был объектом пар ключ: значение. Возможно ли это? Должен ли я использовать другой тип на стороне proto?
message Dictionary {
map<string, string> pairs = 1;
}
Для создания веб-вывода и типов typescript я использую grpc-tools protoc.exe с --js_out=import_style=commonjs,binary
помощью и --grpc-web_out=import_style=commonjs dts,mode=grpcwebtext
Комментарии:
1. У меня такая же проблема, вы нашли решение?
Ответ №1:
В документации предлагается использовать getPairsMap()
в своем Dictionary
сообщении:
https://developers.google.com/protocol-buffers/docs/reference/javascript-generated#map
Затем у toObject
него есть функция:
Я этого не пробовал.
Комментарии:
1. Нет никакой разницы между
getPairsMap().toArray()
иgetPairsMap().toObject()
оба возвращаются[string,string][]
. Что странно, я думаю, глядя на объект, возвращаемый,getPairsMap
есть поле_map
, которое я хотел бы извлечь из него, но не могу найти способ его получить. СуществуетforEach
метод, который я могу использовать для заполнения объектаconst pairs:Record<string,string> = {}; getPairsMap().forEach((entry: string, key: string):void=> { pairs[key]=entry; });