добавление списка ts-proto c -gen к повторяющимся элементам - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть сообщение proto (3), подобное этому:

message DataAggregated {
   repeated Data data = 1;
}

message Data {
   string example = 1
}

Когда сгенерированные типы для этого определения прото добавляются к повторяющимся полям, почему это так, есть ли git причина и есть ли способ остановить этот придаток? это вызывает сильные головные боли.

export namespace DataAggregated {
    export type AsObject = {
        dataList: Array<Data.AsObject>,
    }
}

Проблема

Примечание : я использую AsObject над экземплярами классов по причинам, которые сложно объяснить здесь, и выходят за рамки этого вопроса

Это ничего не возвращает по GRP C

  // I cannot use a return interface here as dataList is not part of the underlying
  // GRPC message so i must return data
  get() {
     return {
       dataList: ['string', 'string']
     }
  }

Это возвращает данные

  // I cannot use a return interface here as data does not exist in the interface
  get() {
     return {
       data: ['string', 'string']
     }
  }

При вызове функции из другого сервер

 export interface ServiceInterface {
     get(data: Empty, metadata: Metadata): Observable< DataAggregated.AsObject>;
 }

 ....

const res = get();
console.log(res.data)     // TsErr: Property 'data' does not exist on type 'AsObject'.ts(2339)
console.log(res.dataList) // undefined

Это делает ввод для повторяющихся полей бесполезным, если вы не решите использовать классы. зачем добавлять список, когда GRP C ожидает data вместо dataList, это похоже на анти-шаблон

...