protobuf js: проверьте, является ли объект instanceof map - PullRequest
0 голосов
/ 27 мая 2020

Я использую protobufjs v4.1.3 и задавался вопросом, можно ли каким-то образом проверить, имеет ли поле в ответе protobuf тип Map.

Например У меня есть следующий прототип файла:

message Test {
    required string string_field = 1;
    map<uint32, uint32> test_field = 2;
}

, и при загрузке прототипа и использовании некоторых тестовых данных я получаю следующий результат:

{
    string_field: 'test',
    test_field:
        Map {
            field:
                T {
                   // ...
                }
            keyElem:
                Element {
                   // ...
                }
            valueElem:
                Element {
                   // ...
                }
            map: { '0': [Object] }
        }
}

Как я могу различить guish a protobufjs.Map из обычного JS объекта? Насколько я понял, сделать instanceof protobufjs.Map невозможно, так как библиотека не предоставляет такую ​​возможность. Единственное, о чем я подумал, - это проверить, есть ли у объекта поле get типа function, но для меня это звучит как взлом. Может быть, есть другой способ более элегантный?

...