Typescript protobuf.js pbts:从.proto生成类型脚本,不带null |未定义
我正在使用PBT为一个大型protobuf库生成typescript声明文件 问题是pbts输出使每个属性都未定义或为空,例如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的源代码或对其输出进行后期处理,以便我可以删除这些不正确的未定义/空属
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(这是我实现的一个无耻的插件)