我目前正在我的打字稿项目中实现一些协议缓冲区翻译。我已经将 proto 文件加载到 ProtoBuilder 中(使用来自protobufjs.d.ts的 typescript 定义文件),并且我已经从构建器返回了一个 ProtoBuf。
如果我在名为 pb 的变量中拥有 ProtoBuf 对象后设置断点,我可以在控制台中调用 pb.decode(buffer) 并且它可以工作。然而,TypeScript 不喜欢这种语法。
经过多次戳戳和刺激,包括尝试以下操作:
pb["decode"](buffer)
(这会导致错误 TS2349 无法调用类型缺少调用签名的表达式。)
我仍然无法像代码一样获得 TypeScript 编译器。
如何从 TypeScript ProtoBuf 对象到 MetaMessage 对象中隐藏的解码函数?
如果重要的话,我在 Visual Studio 2015 中这样做。
编辑:我可以使用以下方法解决问题:
var decoder: any = pb["decode"];
decoder(buffer);
但如果存在,我更喜欢更优雅的解决方案。