Typescript protobuf.js pbts:从.proto生成类型脚本,不带null |未定义

Typescript protobuf.js pbts:从.proto生成类型脚本,不带null |未定义,typescript,protobuf.js,Typescript,Protobuf.js,我正在使用PBT为一个大型protobuf库生成typescript声明文件 问题是pbts输出使每个属性都未定义或为空,例如 interface IMyThing{ myProp?:字符串| null; } 我想要的是: interface IMyThing{ myProp:string; } 实际protobuf定义不是可选的。它们看起来像: 消息虚构{ 字符串myProp=1; } 是否有一些标志或方法来调整PBT的源代码或对其输出进行后期处理,以便我可以删除这些不正确的未定义/空属

我正在使用PBT为一个大型protobuf库生成typescript声明文件

问题是pbts输出使每个属性都未定义或为空,例如

interface IMyThing{
myProp?:字符串| null;
}
我想要的是:

interface IMyThing{
myProp:string;
}

实际protobuf定义不是可选的。它们看起来像:

消息虚构{
字符串myProp=1;
}


是否有一些标志或方法来调整PBT的源代码或对其输出进行后期处理,以便我可以删除这些不正确的未定义/空属性?

更新:由于protobuf 3中的所有消息都是可选的,这是出于设计。

对于proto3语法:

虽然消息字段始终是可选的,但像字符串这样的标量字段始终是必需的

因此,
myProp:string
将是正确的表示形式

在二进制wire格式中,根本不写入空字符串。但是,当读取不包含此字段数据的二进制数据时,生成的代码应设置默认值“”

protobuf 3.12.0中有一个新的实验特性,允许将字符串字段设置为可选。然后签名应该是
myProp?:string
myProp:string |未定义

我建议看一下or(这是我实现的一个无耻的插件)