agreatfool / grpc_tools_node_protoc_ts

Generate TypeScript d.ts definitions for generated js files from grpc_tools_node_protoc

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

specific message field names lead to conflicts with base class in getter/setter

p-jahn opened this issue · comments

If a proto definition contains a message like

message SomeMessage {
  string extension = 1;
}

then the generated code contains something like

export class SomeMessage extends jspb.Message {
    // ...
    getExtension(): string;
    setExtension(value: string): SomeMessage;
    // ...

which are (invalid) implementations of the base methods

export abstract class Message {
    // ...
    getExtension<T>(fieldInfo: ExtensionFieldInfo<T>): T;
    setExtension<T>(fieldInfo: ExtensionFieldInfo<T>, value: T): void;
    // ...

The JS generator works around affected field names Extension and JsPbMessageId this by adding a $ to the getter/setter name: https://github.com/protocolbuffers/protobuf/blob/cf28f28347d65e352f429263500f982ae3e51aed/src/google/protobuf/compiler/js/js_generator.cc#L533-L536

Fixed with version v5.1.2.