我正在使用pbts为大型protobuf库生成打字稿声明文件。
问题是pbts输出使每个属性都不确定或为空,例如
interface IMyThing {
myProp?: string | null;
}
而我想要的是:
interface IMyThing {
myProp: string;
}
实际的protobuf定义不是可选的。它们看起来像:
message MyThing {
string myProp = 1;
}
是否有一些标记或方法可以调整pbts的源代码或对其输出进行后处理,以便删除这些不正确的undefined / null属性?
答案 0 :(得分:0)
更新:由于protobuf 3中的所有消息都是可选的,因此这是设计使然。
答案 1 :(得分:0)
对于proto3语法:
虽然消息字段始终是可选的,但始终需要标量字段(例如字符串)。
所以myProp: string
是正确的表示形式。
在二进制连线格式中,根本不会写入空字符串。但是,当从不包含该字段数据的二进制数据中读取数据时,生成的代码应将默认值设置为“
”。 protobuf 3.12.0中有一个新的实验功能,它允许将字符串字段设为可选。然后签名应该为myProp?: string
或myProp: string | undefined
。
我建议看一下ts-proto或(这对我的实现来说是个无耻的插件)protobuf-ts。