使用protobufjs的基本typescript示例
Basic typescript example of using protobufjs
我目前正在typescript项目中实现一些协议缓冲区转换。我已经将proto文件加载到ProtoBuilder中(使用protobufjs.d.ts中的typescript定义文件),并从构建器返回了一个ProtoBuf。
如果我在一个名为pb的变量中拥有ProtoBuf对象后设置了一个断点,我可以在控制台中调用pb.decode(缓冲区),它就可以工作了。然而,TypeScript不喜欢这种语法。
经过多次试探,包括尝试以下内容:
pb["decode"](buffer)
(这导致错误TS2349无法调用类型缺少调用签名的表达式。)
我仍然无法获得像代码一样的TypeScript编译器。
如何从TypeScript ProtoBuf对象获取MetaMessage对象中隐藏的解码函数?
如果重要的话,我在Visual Studio 2015中做这件事。
编辑:我可以使用来解决这个问题
var decoder: any = pb["decode"];
decoder(buffer);
但我更喜欢一个更优雅的解决方案,如果有的话。
处理现有JavaScript库的定义文件可能很棘手,因为JavaScript的定义非常松散,而TypeScript的定义非常好。在不修改现有.d.ts文件或编写自己的文件的情况下,选项是有限的。理论上,以下内容应该有效:
pb['decode'](buffer)
但你没有提到。您设置中间变量的变通方法效果良好:
var decoder: any = pb["decode"];
decoder(buffer);
此代码类似于其他解决方法,即仅将pb
声明为any
。以下代码在线执行此操作:
(<any>pb).decode(buffer);
这段代码基本上是告诉TypeScript编译器"假装pb
是有decode
方法的东西,或者其他什么"。
相关文章:
- PHP AJAX图片上传示例不上传
- Foreach无法在Typescript中工作
- 扩展SVGTextElement时出现Typescript Uncaught TypeError
- 为什么无法在TypeScript中导出类实例
- API密钥使用和检查示例
- 如何将TypeScript对象转换为普通对象
- 三星智能电视应用程序;Brightcove示例应用程序远程控制问题
- Angular 2.0 with JavaScript or TypeScript?
- "实例范围”;TypeScript类的getter/setter
- 骨干模型默认值-todos.js示例中不必要的代码
- 如何在大型nodeJS代码的基础上逐步引入typescript
- d3js文本传输-示例代码不起作用
- 从HTML调用typescript文件中的函数
- 如何将js库与typescript一起使用
- 理解typescript中的构造函数接口
- Eloquent JavaScript递归示例如何终止为返回1,但仍然输出指数值
- JQuery示例不起作用-“;对象没有't支持属性或方法'按钮'&”;
- 使用protobufjs的基本typescript示例
- 需要将fabricjs.d.ts与TypeScript一起使用的示例
- Typescript,Browserify和angularjs超越了两个文件示例