我正在使用pbts为一个大型的protobuf库生成typescript声明文件。
问题是pbts的输出使得每个属性都是未定义的或为空,例如
interface IMyThing { myProp?: string | null; },我想要的是:
interface IMyThing { myProp: string; }
实际的protobuf定义不是可选的。它们看起来像:
message MyThing { string myProp = 1; }
有没有什么标志或方法可以调整pbts的源代码或对其输出进行后处理,以便我可以删除这些不正确的未定义/空属性?
发布于 2019-05-10 07:27:41
更新:由于protobuf 3中的所有消息都是可选的,这是设计出来的。
发布于 2020-09-05 01:38:48
对于proto3语法:
虽然消息字段始终是可选的,但像string这样的标量字段始终是必需的。
因此,myProp: string将是正确的表示。
在二进制线格式中,根本不写入空字符串。但是,当读取不包含此字段数据的二进制数据时,生成的代码应设置默认值"“。
protobuf 3.12.0中有一个新的实验性特性,允许将字符串字段设为可选。则签名应为myProp?: string或myProp: string | undefined。
我推荐使用ts-proto或protobuf-ts (这是我的实现的无耻插件)。
https://stackoverflow.com/questions/55290811
复制相似问题