你如何为套接字正确构造和使用缓冲区?

时间:2014-01-04 00:54:08

标签: node.js typescript webstorm definitelytyped

我正在尝试将一段代码转换为TypeScript,而我遇到的问题是我使用UDP套接字的Buffer

我正在使用的代码如下所示:

/// <reference path="../node_modules/DefinitelyTyped/node/node.d.ts" />
import dgram = require( "dgram" );

var udpServer:dgram.Socket = dgram.createSocket( "udp4" );

var message = new Buffer( "foo" );
udpServer.send( message, 0, message.length, 1337, "255.255.255.255" );

WebStorm抱怨message错误Argument type Buffer is not assignable to argument type NodeBuffer

我理解这是因为Socket.send()需要NodeBuffer作为第一个参数而我正在提供Buffer。但是我怎么能克服这个呢?

我无法使用NodeBuffer作为message的类型,只会导致不同的错误。

var message:NodeBuffer = new Buffer( "foo" );

将导致Initializer type Buffer is not assignable to variable type NodeBuffer

var message:NodeBuffer = new NodeBuffer( "foo" );

将导致Argument types do not match parameters

由于http://nodejs.org/api/dgram.html给出的示例在纯JavaScript中为我工作,这让我感到困惑。

那么,我如何正确构建一个可以通过UDP套接字发送的缓冲区呢?

1 个答案:

答案 0 :(得分:0)

问题是由于在WebStorm的JavaScript设置中启用了 Node.js v0.8.16核心模块库引起的。

这个混淆的WebStorm关于Buffer实际上是哪种类型。禁用库将解决错误提示。

可悲的是,这对我们来说并不是一个真正的选择,因为该项目将Node.js与JavaScript TypeScript代码一起使用。但至少我现在知道问题所在。